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

Learn CPP: Split string and manipulation?

本文关键字:操作 字符串 拆分 CPP 学习      更新时间:2023-10-16

可能重复:
删除C++中std::字符串中的空格

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

getline(cin, userInput);

如果用户输入是:你好,我的名字是

我想合并到:Hellomnameis

有什么快速的方法吗。我们将非常感谢你的帮助。谢谢

编辑:

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

我如何将单词分开,因为我想检查什么是"关键字"、"选项"和参数。

您可以使用:

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

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

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

或者如果你是Boost风扇,你可以简单地使用:

erase_all(str, " "); 

如果只想分隔单词,请使用istringstream:

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

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

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

的参数解析的原因

对于去掉空间,@Als的建议是正确的。

要解析命令行参数,请执行以下操作:你可能会使用一个库,即

增强::程序选项(http://www.boost.org/doc/libs/1_47_0/doc/html/program_options.html),

或getopt

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