【发布时间】:2012-11-21 15:22:18
【问题描述】:
我正在使用 std::stringstream 将固定格式的字符串解析为值。但是最后要解析的值不是固定长度的。
要解析这样的字符串,我可能会这样做:
std::stringstream ss("123ABCDEF1And then the rest of the string");
ss >> std::setw(3) >> nId
>> std::setw(6) >> sLabel
>> std::setw(1) >> bFlag
>> sLeftovers;
但是如何设置宽度以便输出字符串的其余部分?
通过反复试验,我发现这样做很有效:
>> std::setw(-1) >> sLeftovers;
但是正确的方法是什么?
【问题讨论】:
-
"通过这样做:
std::setw(-1)" 你的意思是sLeftovers包含值'And'还是'And then the rest of the string'?我发现 'std::setw(-1)` 只检索单词“And”,即与 '>> sLeftovers' 相同的结果 - 它没有影响,这与std::setw的文档一致,该文档指出 @ 987654327@ 设置用作下一次插入操作的字段的字符数。 -
你说得对,马克,在我的实际代码中,数据中没有空格。
标签: c++ stringstream iomanip setw