c – 使用std :: setw后,如何在从流输出时清除宽度?

前端之家收集整理的这篇文章主要介绍了c – 使用std :: setw后,如何在从流输出时清除宽度?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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);
原文链接:https://www.f2er.com/c/117982.html

猜你在找的C&C++相关文章