【发布时间】:2015-08-12 08:08:50
【问题描述】:
我已将文本文件内容加载到 std::string。我想从加载的字符串中删除空格。
- 需要使用以下哪种方法以获得更好的性能?
- 以下哪种方法是最佳实践?
- 还有其他更好的方法来实现这一点吗?
方法一:
在循环语句中使用 string.find() 扫描字符串并使用 string.erase() 删除空格;
方法二:
在循环语句中使用 string.find() 扫描字符串,并使用 string.append() 将非空白字符复制到新的 string() 变量中;
方法三:
在循环语句中使用 string.find() 扫描字符串,并使用 string.replace() 将非空白字符复制到新的 string(size_t n, char c) 变量中;
方法四:
分配一个 char*(使用 malloc[源字符串的大小])
在循环语句中使用 string.find() 扫描字符串,然后使用 strcpy 将非空白字符复制到 char* 变量,然后使用 strcat();
最后将 char* 复制到新字符串
免费字符*
【问题讨论】:
-
你能改变文件的加载方式吗?
-
您最好先确定存在性能问题,然后再关注性能。
-
@m.s.谢谢。这是最好的方法,当我从磁盘读取文件时,我可以使用方法 4 malloc(file_size)。但是我正在使用的 API 读取远程文件并返回字符串类型。我需要编辑问题吗?
-
只需在您的问题中添加此信息,因为它限制了一些解决方案