C++命令行提示符不应重复
C++ command line prompt shouldn't repeat
我的程序从命令行获取输入,并且应该能够处理单个和多个字符命令,如下所示:
prompt> A
A response
prompt> AB
A response
B response
但是现在我的程序的行为是这样的:
prompt> AB
A response
prompt>
B response
如何构建循环来解决此问题?
现在我有:
for(;;)
cout << prompt
cin >> command
// error checking
switch(command) { ... }
如何构建循环来解决此问题?
一种方法是:
- 将输入作为令牌读取。
- 循环访问令牌的字符
- 根据需要处理每个字符。
std::string token;
std::cout << prompt;
std::cin >> token;
for ( char command : token )
{
switch(command) { ... }
}
如果您希望能够将空格字符视为命令,则必须使用std::getline
来读取一行文本并迭代该行的字符。
std::string line;
std::cout << prompt;
std::getline(std::cin, line);
for ( char command : line )
{
switch(command) { ... }
}
假设命令被声明为字符,您的代码正在完全按照您所说的去做。
for(;;)
cout << prompt // prompt user types AB
cin >> command // read one char A
// error checking
switch(command) { ... } // process it
}
现在循环并重新提示。
你需要
for(;;)
{
cout << prompt
cin >> commandString // std::string
for(auto command : commandString) // loop over each char
{
switch(command) { ... }
}
}
相关文章:
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 如何在OMNET++中添加专门的命令行参数?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- C++命令行提示符不应重复
- system() 不适用于修改命令行提示符
- C++交互式命令行提示符,无需等待换行符
- Visual Studio 2017 命令行提示符
- 如何在 Windows 上的 Vim 中使用开发人员命令提示符的命令行