怎样用cin>>读入带空格的字符串到字符数组中去

怎样用cin>>读入带空格的字符串到字符数组中去,第1张

方法一:getline()
读入整行数据,使用回车键输入的换行符来确定输入结尾。
调用方法:
cingetline(str, len)
第一个参数str用来存储输入行的数组名称,第二个参数是要读取的字符数。
方法二:
cinget(str, len)
两者都是读取一行输入,直至换行符。
然后,getline将换行符丢弃,而get()将换行符保留在输入序列里
对于string类:
方法:getline(cin, str)

就是有时候我们在得到一个输入时,会把输入时的回车键留在输入队列里,那么下一个读入会读取它,所以我们用cinget()读取它,那么以后读取时就不会出现读入回车了。。
一般是while(cinget() != '\n')continue;

你的问题太多了,我说一下win环境下vs编译器对c++流的处理。
一、键盘回车后,流接收到的字符是换行符0(即'\n'),注意不是回车0x0d。
二、cin在输入时,会预先处理空格(流在内部维护着一个查询表,用来判断当前读取的字符是否为空格。空格也包含那些被视为空格的字符,如换行符)。
三、cingetline不预先处理空格,它直接读取缓冲区。所以,如果缓冲区存在换行符时,它就直接结束了,不会给用户输入的机会。而cin会跳过缓冲区原有的空格,用户有机会输入。
四、对cin那一行代码下断点,单步跟踪后就可以看到流实现的stl源码,重点是看istream这个文件。在这里,你可以看到流是怎样维护的,包括缓冲区的读写,前提是要有点耐心,慢慢看。

循环测试条件是 a != '\n',a 等于 '\n' 才退出循环。
a 是 char 类型。
cin >> a;
cin >> 不会读取按回车键生成的换行符,如果你直接按回车, a 里面什么都没有,所以 a 不等于 '\n' 继续循环。

cin 在C++中是一个流 *** 作中的输入 *** 作,它像一个空槽,等待你向其中添加内容,例如:
int i = 0;

cout<<"请输入一个数值,它会测试你的命运:";
cin >> i;
那么cin就把你输入的值放到了i中
C的scanf();也可以完成同样的功能,但必须强调在C中没有cin
例如:
int i = 0;
printf("请输入一个数值,它会测试你的命运:");
scanf("%d", &i);
它同样完成上面的工作不知你是否能理解!
在C中<<与>> *** 作是位 *** 作符,但在C++中要看它出现的位置,也就是与具体实现有关。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13335149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-16
下一篇 2023-07-16

发表评论

登录后才能评论

评论列表(0条)

保存