如何实现在同一行向用户请求输入并显示内容?附现有代码
如何让提示内容与用户输入在同一行显示?
嘿,我懂你的需求啦——就是想让请求用户输入的提示文字和用户实际输入的内容出现在同一行,对吧?看你现有的代码,问题出在输入操作前的输出逻辑没有和输入绑定在同一行,导致默认换行了。
解决思路
在C++里,只要你在调用cin之前不输出换行符(比如endl或\n),直接输出提示文本,紧接着调用输入操作,就能实现提示和输入同处一行的效果。
修改后的代码示例
你可以把现有代码的输入部分调整成这样:
//generates the menu void menu(int TL, string title) { char a; //menu layout cout << title << endl; emptyLine(TL); centreHeading(TL, "OPTIONS"); emptyLine(TL); centreText(TL, "(1) PLAY"); centreText(TL, "(2) SET GAME LENGTH"); centreText(TL, "(3) SET ROW LENGTH"); centreText(TL, "(4) PEG SETTINGS"); centreText(TL, "(9) HELP"); centreText(TL, "(0) EXIT GAME"); emptyLine(TL); // 关键修改:输出提示后不换行,直接调用cin cout << "|" << setw(19) << "请输入你的选择:"; cin >> a; // 后续代码... }
原理说明
endl会同时触发换行和缓冲区刷新两个动作,如果你不想换行,就别用它;- 直接输出提示文本后,缓冲区内容会保留在当前行,此时调用
cin,用户输入就会紧跟在提示文字后面显示。
要是你需要调整提示文本的对齐位置,只需要修改setw的参数或者提示内容即可,核心逻辑就是让提示和输入操作处于同一逻辑行,中间不插入换行符。
内容的提问来源于stack exchange,提问作者Haziq Yazid
相关产品推荐
相关产品推荐

