从文本内容中略过逗号和其他标记字符,并用空格替换它

use*_*123 -1 c++ string

在使用c ++执行此操作时,我们可以扫描从第一个char到strlen(text)-1的整个内容,并检查逗号和标点符号.如果找到char,那么我们可以用"space"或任何其他char替换它.

for(i=0;i<str.strlen();i++)
{
    if(ch[i] == ',' or [other])  //assume I have copied content of str in ch[]
       ch[i]=' ';
}
Run Code Online (Sandbox Code Playgroud)

但是有没有提供此功能的C++函数或类?

我正在处理字符串,unordered_map,isstringstream,vector.每个都有自己的功能.但这有什么可以用于我的上述目的吗?或者是其他东西?

bil*_*llz 8

您可以使用std :: replacestd :: replace_if

std::replace(s.begin(), s.end(), ',' , ' ');
std::replace_if(s.begin(), s.end(), [](char c){return c == ','; }, ' ');
Run Code Online (Sandbox Code Playgroud)

现场样本

对于C++ 03,可以这样做:

#include <cctype>   
struct IsComma
{
    bool operator()(char c) const
    {
        return (bool)std::ispunct(c);  //!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ as punctuation
    }
};

std::replace_if(s.begin(), s.end(), IsComma(), ' ');
Run Code Online (Sandbox Code Playgroud)

不要忘记阅读 std::ispunct

希望这可以帮助!

  • +1可能必须利用[`std :: ispunct()`](http://en.cppreference.com/w/cpp/string/byte/spunct)或其他一些来获得完整的开局. (3认同)