我开始学习cpp。希望你们能帮助我。现在,我遇到了字符串问题。我从用户那里得到输入并想要忽略空格并组合字符串。这是:
getline(cin, userInput);
如果用户输入为:Hello,我的名字是
我想结合:Hellomynameis
有没有快速的方法来做到这一点。非常感谢您的帮助。感谢。
编辑:
并且,对于另一种情况:如果用户输入是:keyword -a argument1 argument2 argument3
如何分隔单词,因为我想检查“关键字”,“选项”和参数是什么。
答案 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)