这个c++输入怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:52:57
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
string str;
char array[20];
/*****************************************************/
cout<<" Input a string "<<endl;
cin>>str; // 输入str的时候,只要遇到了空格,就会结束输入
cout<<str<<endl;
/********************************************************/

cout<<" Input a line using cin.getline() "<<endl;
cin.getline(array,10);
cout<<array<<endl;
/********************************************************/
}
这个程序的cin>>str能正确执行,可是cin.getline(array,10);似乎不起作用,why???

正如你所说,cin从输入流中读入字符串,遇到空白字符(空格,换行,制表符等)就会结束输入。但剩余的字符仍在然输入流里。

cin在读取str时,会把换行符'\n'留在输入流里,所以当接着用getline函数时,getline将读取该换行符,换行符本身就是一行,所以getline读了换行符后就不在继续读了。

修正的方法很简单,另外定义一个变量来接收换行符,当然也可以刷新缓冲区。
/*****************************************************/
cout<<" Input a string "<<endl;
cin>>str; // 输入str的时候,只要遇到了空格,就会结束输入
string remainder;
cin>>remainder;
cout<<str<<endl;
/********************************************************/