我有一个问题,但我无法弄清楚我做错了什么。我不确定这是否是我的循环出现问题,或者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套接字缓冲区?