只有第一次致電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