gpt4 book ai didi

c++ - 从 std::string 中删除空格的最佳方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:59 27 4
gpt4 key购买 nike

我已将文本文件内容加载到 std::string。我想从加载的字符串中删除空格。

  1. 为了获得更好的性能,需要使用以下哪种方法?
  2. 以下哪种方法是最佳实践。?
  3. 还有什么更好的方法可以实现这一点?

方法一:
在循环语句中使用 string.find() 扫描字符串并使用 string.erase() 删除空格;

方法二:
在循环语句中使用 string.find() 扫描字符串,并使用 string.append() 将非空白字符复制到新的 string() 变量;

方法三:
在循环语句中使用 string.find() 扫描字符串,并使用 string.replace() 将非空白字符复制到新的 string(size_t n, char c) 变量;

方法四:
分配一个 char*(使用 malloc[源字符串的大小])
在循环语句中使用 string.find() 扫描字符串,然后使用 strcpy 和 strcat() 将非空白字符复制到 char* 变量;
最后将 char* 复制到一个新字符串
免费字符*

最佳答案

编辑:升级到语言环境感知特征。感谢 user657267 !

标准算法很简洁!

s.erase(std::remove_if(
begin(s), end(s),
[l = std::locale{}](auto ch) { return std::isspace(ch, l); }
), end(s));

Live on Coliru

那是为了就地修改,如果你需要保留原始字符串:

std::string s2;
s2.reserve(s.size());
std::remove_copy_if(
begin(s), end(s),
std::back_inserter(s2),
[l = std::locale{}](auto ch) { return std::isspace(ch, l); }
);

Live on Coliru

关于c++ - 从 std::string 中删除空格的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31959532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com