为什么std :: noskipws不起作用,或者应该怎么做?

| 首先我的理解是
cin >> std::noskipws >> str;
应该将整行从“ 1”粘贴到“ 2”中,例如“我有空格”。但是,这只会将“ i”放入
str
。这可能是一个错误的假设,在这种情况下,
std::noskipws
会做什么? 我知道有一个函数
std::getline
确实起作用,但是仅出于教育目的,我决定尝试让
std::noskipws
为我工作。我过去曾尝试过,但是它永远无法工作,因此我通常继续使用
std::getline
。 我想到目前为止,我发现
std::noskipws
在技术上只是取消设置
std::skipws
,而内部对internal10ѭ的调用
ios_base::unsetf(std::ios::skipws); 
要么
ios_base::unsetf(ios_base::skipws);
因此,我尝试继承自己的流形式ѭ10,并手动设置(取消设置)这些标志。仍然没有骰子。 那么,我是完全脱离基地还是有办法进行这项工作?     
已邀请:
std :: noskipws告诉istream在尝试读取类型时不要跳过任何前导空格。如果没有前导空白,则标志不会产生影响。     
std::skipws
的工作方式如下:
std::istream
始终保持当前的读取位置。如果设置了“ 9”,则在调用“ 17”之前,当前读取位置将前进到第一个非空格字符。 您看到的行为(在
\'i\'
之后的第一个空格处停止)是由
operator>>
代表
std::string
(和
std::wstring
)引起的。该运算符不考虑“ 15”标志。另一类型的
operator<<
可能会做出其他决定,甚至在空格中也会继续。     

要回复问题请先登录注册