请问C++中skipws、ws两者有什么区别?

 我来答
cqdjyy01234
2014-08-24 · TA获得超过1147个赞
知道小有建树答主
回答量:267
采纳率:50%
帮助的人:306万
展开全部

skipws的意思是在用>>读取数据之前跳过空格(此时空格依然存在),ws的意思是读取后面的所有空格(空格被跳过)。下面是个示例,你可以揣摩一下:

#include <iomanip>
#include <iostream>
#include <sstream>
using namespace std;

int main(){
    istringstream istr(" 123 - 123");
    int a;
    istr >> noskipws >> a;
    if (!istr){
        cerr << "读取错误\n";
        istr.clear();
    }
    istr >> skipws >> a;
    cout << "a = " << a << "\n";
    char c;
    if (istr.get(c), c != '-'){
        cerr << "不是-\n";
        istr.unget();
    }
    if ((istr >> ws).get(c), c == '-'){
        istr >> a;
        cout << "a = " << a << "\n";
    }

    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式