看不懂getline函数 - -
c++吧
全部回复
仅看楼主
level 5
koko2015 楼主
#include <iostream>
#include <string>
using std::cout;
using std::endl;
uisng std::getline;
int main()
{
     string line;
     while (getline(cin , line))           
         cout << line << endl;              //运行结果??????
     return 0;
}
屏幕上输入输出情况如下:
first(回车)
second(回车)
first
third(回车)
second
...
书上对getline函数的说明是从输入流的下一行读取直到遇到换行,这样的话"first"就应该没有赋给对象line,直接舍掉了,第一次line接收并输出应该是"second",怎么会隔行输出?而且"first"也没舍掉。
按照屏幕上的情况,只能说line通过getline函数先接收了"first"了?然后再次输入,这时line先输出"first"再接收"second"了?但是连续两次输入说明第一次输入是没有进循环的,第一次和第二次输入实在没想过来……请教高手解答。

2010年03月28日 14点03分 1
level 1
我看的是《c++变成思想》,和你的情况几乎一模一样。自学,也没人告诉,不知道是不是书上写错了。
2010年03月29日 02点03分 2
level 0
cout.flush();
2010年03月29日 03点03分 3
level 5
不明白
2010年03月29日 05点03分 4
level 5
koko2015 楼主
flush是刷新缓冲区?试了没用哦,不过还是要谢谢你!
2010年03月29日 09点03分 5
level 5
koko2015 楼主
问题已经解决,这是微软开发VC++6.0中的一个BUG - -
(估计你也用VC6.0才遇到这诡异问题呵呵)
具体解决方法在这里:
http://bbs.bccn.net/viewthread.php?tid=123419&extra=&page=1
2010年03月29日 09点03分 6
level 5
koko2015 楼主
注意9楼是正解
原程序不动,现在输入输出如下:
first(回车)
first
second(回车)
second
...
2010年03月29日 09点03分 7
1