我正在使用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”还是“然后是字符串的其余部分”?我发现std::setw(-1)
只检索单词“And”,即与“>> sLeftovers”相同的结果 - 它没有影响,这与std::setw
的文档一致,该文档说明std :: setw
设置要用作下一个插入操作字段的字符数。 - mark