只有第一次致电getline()
才会从std::cin
中读取任何内容。 buffer
是否包含某个问题 - 为什么getline()
只覆盖buffer
的内容?为什么我不能连续两次使用std :: cin.getline()?
我怎样才能得到第二个电话getline()
阅读的东西?
我的代码:
const int recordLen = 20;
// truncate the input to 20 chars
void getText(char line[])
{
std::cout << "Enter something for getText: ";
std::cin.getline(line, recordLen+1);
for(int i = std::strlen(line); i < recordLen; i++)
{
line[i] = ' ';
}
line[recordLen] = '\0';
}
int main()
{
char buffer[340];
getText(buffer);
std::cout << buffer;
std::cout << "Now enter some more text:";
// put more text into buffer
std::cin.getline(buffer, 30);
std::cout << "you entered : " << buffer << std::endl;
return 0;
}
所以 - 程序的示例输出:
为的getText输入的东西:alskdjfalkjsdfljasldkfjlaksjdf alskdjfalkjsdfljasldNow输入一些文字:您输入:
的显示后“现在输入更多文字:“,程序会立即显示”您输入的内容:“。它不会给我输入更多文本的机会,也不会显示从先前调用getline()截断的任何字符。
你能告诉你给了什么输入? – Angew 2013-05-06 06:49:05
'getline'确实会覆盖'buffer'的内容。我测试了你的代码,它按预期工作。你的问题一定是别的。 – john 2013-05-06 06:50:19
@john,您是否在第一次输入请求时输入了超过'recordLen'字符?如果我这样做,第二次调用getline()似乎会被跳过,或者不允许我输入任何内容。 – BeeBand 2013-05-06 08:10:54