我正在使用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::getline
获取字符串的其余部分:
std::stringstream ss("123ABCDEF1And then the rest of the string"); ss >> std::setw(3) >> nId >> std::setw(6) >> sLabel >> std::setw(1) >> bFlag; std::getline(ss,sLeftovers);