请教c++里string与getline(cin,string)的有关内容.
答案:5 悬赏:10 手机版
解决时间 2021-03-22 03:24
- 提问者网友:wodetian
- 2021-03-21 07:29
请教c++里string与getline(cin,string)的有关内容.
最佳答案
- 五星知识达人网友:酒安江南
- 2021-03-21 08:33
getline()输入的是char型的数据,自然不会输出想要的结果,可以加上cin.clear();函数来清空getling()函数
按两下回车是因为没有结束标志的原因
getline()括号中是要求有结束标志的
按两下回车是因为没有结束标志的原因
getline()括号中是要求有结束标志的
全部回答
- 1楼网友:人類模型
- 2021-03-21 11:45
你在程序里加上这一句:
#include 或者 #include
应该就可以了,已在Dev-C++ 4.9.9.2下测试通过。
#include
应该就可以了,已在Dev-C++ 4.9.9.2下测试通过。
- 2楼网友:青尢
- 2021-03-21 11:15
你的string s3=s1+s2;
中的+是没有问题的吧?
中的+是没有问题的吧?
- 3楼网友:迟山
- 2021-03-21 10:42
我最近也遇到了这个问题(老师布置的作业要求用VC++6.0完成,郁闷!平时我一般用VS2008),费了一番周折才弄明白,看到几年前的提问,我就发一下自己的看法,算作复习吧~
“在getline(cin,s1);的时候,输入s1后摁两下回车,程序才会往下运行(这是正常的,我明白是怎么回事),” 这句话是不对的,这种情况是VC++6.0的一个bug。
就你的程序而言,在VC6.0中,输入s1后,按回车两次,第一个回车是第一个getline函数的截止符,但读取后被抛弃,s1被正确赋值,
按第二个回车后(此回车符在缓冲区中),输出提示"please input anther one.",然后输入s2,但是此时缓冲区中第一个字符就是回车,第二个getline函数读到的此回车符,然后s2就被置为空串(原来也是空串)。这样,后面输入的内容就继续停留在了缓冲区里,并没有赋给s2.然后s3就等于s1连接上一个空串,自然还和s1相同。
我不知道2007年哪个版本的VC是最新的,但是VC++6.0bug之多,着实害人不浅。VS2008 2010已经没了这个问题,我猜测VS2005应该也修正了此问题。抛弃VC++6.0吧,我们得跟着标准走。
“在getline(cin,s1);的时候,输入s1后摁两下回车,程序才会往下运行(这是正常的,我明白是怎么回事),” 这句话是不对的,这种情况是VC++6.0的一个bug。
就你的程序而言,在VC6.0中,输入s1后,按回车两次,第一个回车是第一个getline函数的截止符,但读取后被抛弃,s1被正确赋值,
按第二个回车后(此回车符在缓冲区中),输出提示"please input anther one.",然后输入s2,但是此时缓冲区中第一个字符就是回车,第二个getline函数读到的此回车符,然后s2就被置为空串(原来也是空串)。这样,后面输入的内容就继续停留在了缓冲区里,并没有赋给s2.然后s3就等于s1连接上一个空串,自然还和s1相同。
我不知道2007年哪个版本的VC是最新的,但是VC++6.0bug之多,着实害人不浅。VS2008 2010已经没了这个问题,我猜测VS2005应该也修正了此问题。抛弃VC++6.0吧,我们得跟着标准走。
- 4楼网友:有你哪都是故乡
- 2021-03-21 09:41
getline()输入的是char型的数据,自然不会输出你想要的结果,可以加上cin.clear();函数来清空getling()函数
-------------可能是这样。仅供参考
你按两下回车是因为没有结束标志的原因
getline()括号中是要求有结束标志的,
-------------可能是这样。仅供参考
你按两下回车是因为没有结束标志的原因
getline()括号中是要求有结束标志的,
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯