我正在尝试以下代码:
int main()
{
char str1[20];
int a;
cout << "Enter Integer:"
cin >> a;
cout << "Integer:"<<a<<endl;
cout << "Enter string:"<<endl;
cin.getline(str1,20);
cout << "Input String is:"<<str1;
return 0;
}
和OUTPUT是:
Enter Integer:20
Integer:20
Enter string:
Input String is:
我可以在不使用cin接受整数时输入字符串,但是当我尝试在cin之后使用cin.getline()时,它无效。
有人可以帮忙吗?
答案 0 :(得分:1)
问题在于 因此,如果您在换行符之前先执行 注意:输入“20,20,mystring”后输入缓冲区中的内容实际上是 因此operator>>
在字段之前忽略空格(即' ', '\t', '\n'
),即它会在之前读取下一个空格。< / p>
另一方面,getline
读取直到并包含下一个换行符,并返回之前的文本。operator>>
,然后getline
,则operator>>
将在换行符之前读取,并且getline将只读取到换行符,返回一个空字符串。20\n20\nmystring
operator>>
读取并返回20
operator>>
读取到第二个20
之后,吞下第一个\n
并返回第二个20
getline
读取到第二个\n
并返回之前的文本,即没有。
答案 1 :(得分:0)
试用函数 gets(),我更喜欢它接受字符串,而你需要传递的唯一参数是字符串名称。