为什么std :: noskipws没有工作,或者它应该做什么?

Dig*_*ers 9 c++ std cin

首先,我的理解是

cin >> std::noskipws >> str;
Run Code Online (Sandbox Code Playgroud)

应该cin像"我有空间"一样坚持整行str.然而,这只会把"我"放进去str.这可能是一个错误的假设,在这种情况下std::noskipws做了什么?

我知道有一个功能std::getline,这确实有效,但仅仅出于教育目的,我决定尝试std::noskipws为我工作.我过去曾尝试过,但它从未运作过,所以我通常会继续使用std::getline.

我认为到目前为止我发现的是std::noskipws技术上只是取消std::skipwsbasic_iostream刚刚调用内部的内容

ios_base::unsetf(std::ios::skipws); 
Run Code Online (Sandbox Code Playgroud)

要么

ios_base::unsetf(ios_base::skipws);
Run Code Online (Sandbox Code Playgroud)

所以我尝试继承自己的流表单basic_iostream并手动设置这些标志(取消设置).仍然没有骰子.

那么,我是完全偏离基地还是有办法让这项工作成功?

How*_*ant 13

std :: noskipws告诉istream在尝试读取类型时不跳过任何前导空格.当没有前导空格时,标志没有影响.