c – noskipws对cin的影响>>
发布时间:2020-12-16 03:24:38 所属栏目:百科 来源:网络整理
导读:据我所知,提取运算符在开始时跳过空白,并在遇到空白或流结束时停止. noskipws可用于停止忽略前导空格. 我有以下程序,我使用过noskipws. #include iostreamusing namespace std;int main(){ char name[128]; cout"Enter a name "; cinnoskipwsname; cout"You
据我所知,提取运算符在开始时跳过空白,并在遇到空白或流结束时停止. noskipws可用于停止忽略前导空格.
我有以下程序,我使用过noskipws. #include <iostream> using namespace std; int main() { char name[128]; cout<<"Enter a name "; cin>>noskipws>>name; cout<<"You entered "<<name<<"n"; cout<<"Enter another name "; cin>>name; cout<<"You entered "<<(int)name[0]<<"n"; return 0; } 我的疑问是: >如果我输入“John”作为第一个输入,那么第二个cin>>操作不等待输入,也不会将任何内容复制到目标,即名称数组.我期待第二个cin>>转移至少一个换行符或流的结尾,而不是仅仅将目标字符串设置为空.为什么会这样? 以下是该计划的输出: Enter a name John You entered John Enter another name You entered 0 Enter a name John Smith You entered John Enter another name You entered 0 谢谢!!! 解决方法
>>的基本算法一个字符串是:
skip whitespace read and extract until next whitespace 如果您使用noskipws,则跳过第一步.在第一次读取之后,您将被定位在空白处,因此下一个(以及所有后续)读取将立即停止,不提取任何内容. >>字符串永远不会将空格放入字符串中.更一般地,使用>>使用noskipws是有问题的,因为空格始终是>> ;;的分隔符.准时使用它可能是有意义的,但通常应在使用后立即重置. (曾经可能有意义的情况是在对char使用>>时.在这种情况下,流总是提取一个字符.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |