首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个关于 string 对象读写的有关问题

2012-02-07 
请教一个关于 string 对象读写的问题在《c++ Primer 中文第4版》71页遇到一个问题,上机实验过也尚不明白,还

请教一个关于 string 对象读写的问题
在《c++ Primer 中文第4版》71页遇到一个问题,上机实验过也尚不明白,还请大家帮个忙,谢了!

#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
using std::endl;
int main()
{
  string s;
  /*cin >> s;
cout << s <<endl;*/

  /* while( cin >> s )
{cout << s << endl;}*/
  
  return 0;
}

两个注解分别代表两个独立的程序
按书上说 cin >> s 当遇到空白字符,读取终止。
问题一:
第一个注解实验成功,输入:abc def (回车结束输入) 输出:abc
可第二个注解,输入:abc def (回车结束输入) 输出:abc 
  def
也就是说注解二并没有把空格当成结束符,不明白为什么和注解一不同?而且输出的格式形式为两行?

问题二:
注解二尚不知如何结束循环?书上说:“当到达文件尾遇到无效输入时结束。”
不知什么是无效输入?键盘上所有符号都试过,循环依然进行。

本人使用:Microsoft Visual C++ 6.0 英文版
希望大家帮忙,小弟谢过了。


[解决办法]
abc def 这个在第2个是循环2次打印的,所以有换行,输入ctrl+z回车结束
[解决办法]
因为第二个是放在while循环中的,只要循环不结束,你输入的内容就会一直的输出出来!,所以能把空格后面的东西也输出出来...
[解决办法]
问题1解答:
你输入了"abc def",第一次s得到了abc,然后输出了abc。这是空格在起作用,可是这是一个循环,第二次,s又被赋值为def,于是又输出了def。
在这里,空格完全起到了分割输入的作用,只不过是一个循环。
你只要debug一下,就明白了。

问题二解答:EOF的输入,按ctrl+z即可。
[解决办法]
[code=c/c++]
//1. 当输入abc def时,接收abc,遇到空格结束,输出abc
//2. 当两个都没有注释掉时,while循环里的cin >> s 继续接收def,所以,输出了abc\ndef\n
//3. 不是很清楚怎么结束,不过,ctrl + c 可以,呵呵
[/code]

热点排行