学习CPP:拆分字符串和操作?

时间:2011-08-09 06:54:47

标签: c++ string

  

可能重复:
  Remove spaces from std::string in C++

我开始学习cpp。希望你们能帮助我。现在,我遇到了字符串问题。我从用户那里得到输入并想要忽略空格并组合字符串。这是:

getline(cin, userInput);

如果用户输入为:Hello,我的名字是

我想结合:Hellomynameis

有没有快速的方法来做到这一点。非常感谢您的帮助。感谢。

编辑:

并且,对于另一种情况:如果用户输入是:keyword -a argument1 argument2 argument3

如何分隔单词,因为我想检查“关键字”,“选项”和参数是什么。

3 个答案:

答案 0 :(得分:4)

您可以使用:

remove_if(str.begin(), str.end(), ::isspace); 

算法只更改值而不是容器包含的值,因此您需要在调用string::erase后调用remove_if来实际修改容器的长度。

str.erase(remove_if(str.begin(), str.end(), isspace), str.end()); 

或者如果您是 Boost 粉丝,您可以简单地使用:

erase_all(str, " "); 

答案 1 :(得分:0)

如果您只是想分开单词,请使用istringstream:

istringstream iss(userInput)
iss >> blah1 >> blah2 ...

blah1可以是任何类型。例如,如果blah1是浮点数,那么iss>> blah1会尝试将单词转换为浮点数(如C函数atof)。

如果你想进行参数解析,getopt库可能就是你要找的。它是驱动大多数gnu命令行实用程序(如ls)

的参数解析的原因

答案 2 :(得分:0)

为了摆脱@Als所建议的空间是正确的。

用于解析命令行参数: 您可以使用库,即

boost :: program_options(http://www.boost.org/doc/libs/1_47_0/doc/html/program_options.html),

或getopt

或libargh(http://bisqwit.iki.fi/source/libargh.html)