我有一个字符串向量,包含数字,单词,空格,甚至是引号等奇怪的字符。我试图在使用字符串流时阅读所有内容,以便将双打与字符串分开。
当我这样做时:
stringstream包含
4165此包装包含12 1/2“螺丝
代码:
stringstream >> mydouble
stringstream >> mystring
mydouble包含
4165
然后唯一被读入mystring的是
此套装包含12 1/2
我怎样才能让它保持整条线?
有时我的文件包含:
4165此包装包含2 1/2“螺丝
65此包装包含12> 1/2“螺丝
此包装包含1个螺丝
答案 0 :(得分:3)
令人遗憾的是,流提取操作符>>
并不擅长您希望它做的事情。做你想做的事的正确方法是通过
std::getline(stringstream, myline);
然后编写代码来解析该行。
如何解析这条线?我想到了五种选择:
<regex.h>
。<regex>
或TR1 <tr1/regex>
。然而,这些都不是完全无足轻重的。如果你想知道,对于你的应用,我可能选择1,选择3或选择5.无论你选择做什么,祝你好运。
如果您不知道从哪里开始,为什么不查看std::getline()
中提供的<string>
和std::atoi()
中提供的<cstdlib>
?这些应该为你提供一些关于下一步的建议。