C++问题,为什么同样的代码不同的结果

来源:百度知道 编辑:UC知道 时间:2024/09/21 00:30:58
如下的代码:
#include <iostream>
using namespace std;

int main()
{
char stringOne[256];
char stringTwo[256];

cout << "Enter string one: ";
cin.get(stringOne,256);
cout << "stringOne: " << stringOne << endl;

cout << "Enter string two: ";
cin.get(stringTwo,256);
cout << "stringTwo: " << stringTwo << endl;
return 0;
}

输出见附图。为什么会这样?

你在运行时候输入的第一个字符串实际上是以 \n 结尾的
istream的get( char*, int, char );函数只会读取到 \n 为止,并且把 \n 留在缓冲区内,因此第二次get读取的字符串实际上是空的。

修改的方法:
1.在两段代码之间加入一个 cin.get(); 这样就可把那个 \n 字符“吃掉了”
2.用getline 替换get,getline和get的区别就是会把 \n 从缓冲区里面移除。

在第二个段,代码执行前,清空输入缓存
即加入以下代码
cin.clear();
cin.ignore(1000,'\n');

试试看吧256改成20看呢~