将字符串拆分为多个原始类型
Posted
技术标签:
【中文标题】将字符串拆分为多个原始类型【英文标题】:Splitting a string into multiple primitive types 【发布时间】:2012-04-17 15:16:47 【问题描述】:我正在编写一个程序,它从用户那里读取一个字符串并使用它来处理一个请求。发出提示后,我可以期待以下三种可能的响应之一:
-
字符串字符串
字符串整数
字符串
根据用户给出的命令类型,程序将执行不同的任务。我在尝试处理用户输入时遇到了困难。为了清楚起见,用户将键入命令作为单个字符串,因此用户执行选项 2 的示例可能会在提示后输入“age 8”。在此示例中,我希望程序将“年龄”存储为字符串,将“8”存储为整数。有什么好的方法可以解决这个问题?
根据我在这里收集到的信息,使用 strtok() 或 boost 可能是一种解决方案。但是,我都尝试过,但都没有成功,如果有人可以帮助使事情变得更清楚,那将非常有帮助。提前致谢
【问题讨论】:
string str; int num; cin >> str >> num;
这样的东西不适合你?
我想唯一的问题是如何确定用户是否以字符串或字符串的形式输入输入,而不是示例中的字符串整数。
@Shahbaz:这在情况 3 中行不通。您可能想要读取一行,然后解析它,可能来自 stringstream
。
@MikeSeymour,对不起,我理解用户首先给出他的选择,然后输入三种形式之一。
【参考方案1】:
使用std::getline
获得一行输入后,您可以使用std::istringstream
回收文本以进行进一步处理。
// get exactly one line of input
std::string input_line;
getline( std::cin, input_line );
// go back and see what input was
std::istringstream parse_input( input_line );
std::string op_token;
parse_input >> op_token;
if ( op_token == "age" )
// conditionally extract and handle the individual pieces
int age;
parse_input >> age;
【讨论】:
@JaimieKnox 欢迎来到 SO!如果这解决了您的问题,请单击此答案旁边左上角的绿色复选标记。以上是关于将字符串拆分为多个原始类型的主要内容,如果未能解决你的问题,请参考以下文章