1

例如,显示如下内容:

'Insert player name: StackUser'

默认情况下显示“ StackUser ”,但如果查找不同的名称,则允许用户更改该文本。这个默认文本在窗口程序中很常见,但我不知道它是否可以在基于命令行的程序上执行。

4

1 回答 1

1

传统的方法(回到 1960 年代的 Fortran 程序)是做这样的事情,它适用于任何类型的控制台(甚至是打印终端):

#include <iostream>
#include <string>

using namespace std;

int main () {
    string nam = "StackUser";
    cout << "Enter your name (or press <Enter> for '" << nam << "'): ";
    string newname;
    getline(cin,newname);
    if (newname.length() > 0) {
        nam = newname;
    }
    cout << "Username is " << nam << endl;
    return 0;
}

调用此程序default后,它现在可以像这样运行:

$ ./default
Enter your name (or press <Enter> for 'StackUser'):
Username is StackUser

$ ./default
Enter your name (or press <Enter> for 'StackUser'): Simon
Username is Simon

如果您希望用户能够将光标移回默认文本并对其进行编辑,那么执行此操作的方式将取决于您正在工作的特定环境(例如特定的控制台或控制台模拟器)。在 Unix 中,您可以使用该curses库在 Unix 系统支持的几乎任何终端上执行此操作(例如打印终端除外),但这对于在(例如)Windows 命令行中运行的 C++ 程序不起作用。但是,将光标移回右侧以编辑默认文本所需的击键次数将超过键入替换所需的次数,因此我认为让用户键入替换是明智的选择。

于 2013-09-07T03:40:54.873 回答