字符串问题

boy8765 2009-07-15 05:04:07
菜鸟刚在自学C++的第1章节,使用的是Accelerated C++,有下面这个程序:
#include <iostream>
#include <string>

int main()
{


std::cout << "What is you name?";

std::string name;

std::cin >> name;//第一次输入

std::cout << "Hello," << name

<< std::endl << "And what is yours?";

std::cin >> name;//第二次输入

std::cout << "Hello," << name

<< ";nice to meet you too!"<< std::endl;


return 0;
}


当程序向我们发出输入请求时,如果我们同时输入了二个或是二个以上的名字(中间有空格,例如:xie cheng liu),为什么不会要求进行第二次输入?为什么第三个字符串liu会毫无作用?出现上述结果的原理是什么?
请网友指点.菜鸟不胜感激!
...全文
52 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
physics1988 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 amossavez 的回复:]
如果你想直接得到例如:wo ai zhong guo ,你可以用getline(cin,name);
[/Quote]
cin是以空格符为分隔的,当输入流遇到空格的时候该次的读入就完毕。
你提到的问题就是xie读入到了第一次的string变量中,而cheng则读入到了第二次的string变量中
ysysbaobei 2009-07-16
  • 打赏
  • 举报
回复
顶下
amossavez 2009-07-16
  • 打赏
  • 举报
回复
如果你想直接得到例如:wo ai zhong guo ,你可以用getline(cin,name);
amossavez 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 boy8765 的回复:]
谢谢楼上的网友们."cin对象属于格式化输入输出,它以空白字符为分隔符."
请问:我的问题与缓冲区刷新有无关系?
[/Quote]
没关系!
boy8765 2009-07-16
  • 打赏
  • 举报
回复
谢谢楼上的网友们."cin对象属于格式化输入输出,它以空白字符为分隔符."
请问:我的问题与缓冲区刷新有无关系?
huqinglu123 2009-07-15
  • 打赏
  • 举报
回复
再加个cin
superbtl 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 watergear 的回复:]
因为程序里只有两句
std::cin >> name;

cin>>string语句,但遇到空格或换行等制表符,就会中断的。
所以对于xie cheng liu
第一句cin接收xie
第二句cin接收cheng

完毕。
[/Quote]正解
飞天御剑流 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 boy8765 的帖子:]
菜鸟刚在自学C++的第1章节,使用的是Accelerated C++,有下面这个程序:
#include <iostream>
#include <string>

int main()
{


std::cout < < "What is you name?";

std::string name;

std::cin >> name;//第一次输入

std::cout < < "Hello," < < name

< < std::endl < < "And what is yours?";

std::cin >> name;//第二次输入

std::cout < < "Hello," < < name

< < "…
[/Quote]

cin对象属于格式化输入输出,它以空白字符为分隔符,就是空格、回车和制表符。
watergear 2009-07-15
  • 打赏
  • 举报
回复
因为程序里只有两句
std::cin >> name;

cin>>string语句,但遇到空格或换行等制表符,就会中断的。
所以对于xie cheng liu
第一句cin接收xie
第二句cin接收cheng

完毕。
jenglev 2009-07-15
  • 打赏
  • 举报
回复
遇到空格或回车就默认是输入结束了,你相当于输入三次。程序中美要求有第三次输入,所以第三个字符串没用。
healer_kx 2009-07-15
  • 打赏
  • 举报
回复
cin >> noskipws >> name;

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧