我有一個問題,但我無法弄清楚我做錯了什麼。我不確定這是否是我的循環出現問題,或者cin緩衝區未被清除。我正在做一個將C風格的字符串轉換爲大寫字母的程序,但是如果用戶輸入的字符數超過了11個,那麼該函數應該只顯示前11個字符,之後的任何內容都不應該顯示。問題是,如果我輸入超過11個字符,然後我的循環從不停止,並不斷告訴用戶輸入的答案無效,並且他是否要輸入新的字符串。環路問題。 Cin C++ getline清除緩衝區
0
A
回答
0
問題出在您嘗試清除緩衝區時。當你從cStringToUpper返回時,你的緩衝區中還有額外的字符,但是你馬上尋找y/q。
0
你給cin.getline一個緩衝區12長,所以它只會佔用很多字符,其餘的仍然在緩衝區中。如果你改用
string str;
cin.getline(str)
然後你會得到整條線,然後你可以裁剪11個字符。不是100%的cin-syntax,但你明白了。
或移動忽略部分上述
cin >>cont;
忽略多餘的字符的方式。
0
cin >> cont;
cout << "\n" << endl;
cin.ignore(200,'\n');
應該
cin.ignore(200,'\n');
cin >> cont;
cout << "\n" << endl;
0
您可以通過修改cStringToUpper FN糾正你的計劃。例如:
...
int loopCount;
char buffer[256];
cin.getline(buffer,256);
strncpy(letters, buffer, 11);
//letters[11]= '\0';
cout << "\n" << endl;
...
相關問題
- 1. 如何清除cin的緩衝區?
- 2. cin和緩衝區問題
- 3. 當使用GetAsyncKeyState()時,C++清除cin緩衝區
- 4. C++ cin問題
- 5. 如何在讀取字符後清除cin緩衝區
- 6. C基本環形緩衝區問題
- 7. 清除stdin緩衝區?
- 8. 清除bash「源緩衝區」
- 9. 使用cin對象進行輸入驗證並清除緩衝區(C++)
- 10. C緩衝區清除後繼續
- 11. C++清除輸入緩衝區
- 12. 清除C#性能測試緩衝區?
- 13. 如何清除緩衝區?
- 14. python IRC緩衝區沒有清除
- 15. C++ while循環和getline問題
- 16. C++ getline cin錯誤
- 17. 如何清除`TargetDatatLine`讀取緩衝區
- 18. 如何清除流串的緩衝區?
- 19. 在OpenGL中清除顏色緩衝區
- 20. 如何清除(char *)中的緩衝區?
- 21. 區別:cin.getline()和getline(cin,st)
- 22. 如何清除串行緩衝區?
- 23. 在CDT Builder中cin :: getline的問題
- 24. VB清除鍵盤緩衝區
- 25. 調用glTexImage2D清除數據緩衝區
- 26. 透明圖形緩衝區清除?
- 27. DirectX Z緩衝區問題
- 28. C++頂點緩衝區問題
- 29. C緩衝區硬編碼問題
- 30. C#如何手動清除TCP套接字緩衝區?