C++循环I/O问题
C++ looping I/O issue
int main(int argc, char *argv[]) {
while (true) {
std::cout << "Enter command (with arguments) to profile: ";
std::string command;
std::cin >> command;
std::cout << "Running command: " << command << std::endl;
Process::create(true, command);
}
}
这应该不是一个困难的问题,但我是一个初学者C++程序员。我有以下代码,它们应该无休止地循环,提示并接受用户输入。然后,它将输入作为我在其他地方创建的函数的命令运行。
问题是,在输入第一个命令后,输出由Process::create
方法打印,当循环返回时,它使用打印的数据,而不是接受我自己的输入。我做错了什么?我想我可能需要刷新cin
流或其他什么,但我不知道。
下面是一个示例输出来演示我的问题:
Enter command (with arguments) to profile: ls
Running command: ls
Enter command (with arguments) to profile: homework8 Homework8.cpp~ Process.cpp~ stats.dat
Homework8 plot_stats.gnu Process.h TestProgram.cpp
Homework8.cpp Process.cpp ProcessStats.h
使用std::getline从流中获取字符串,而不是std::cin>>命令;
std::string command;
std::getline(std::cin, command);
或者在从流获取之前需要检查std::cin
using std::cin;
using std::getline;
char line[MAX_LINE]; /* Line buffer */
while(true)
{
/* Get command */
cout << "viettuan@shell:~$ ";
if (!cin)
cin.clear();
else
cin.getline(line, MAX_LINE);
//... Do process here
}
使用std::getline
获取整行。执行std::cin >> command;
会在第一个空白处停止,所以如果您输入一个带有参数的命令,那么您将对该行进行多次循环迭代。
while ( std::getline(std::cin, command )
{
std::cout << "Running command: " << command << std::endl;
Process::create(true, command);
}
// getting here means they closed stdin
int main(int argc, char *argv[]) {
while (true) {
std::cout << "Enter command (with arguments) to profile: ";
std::string command;
std::cin >> command;
std::cout << "Running command: " << command << std::endl;
Process::create(true, command);
std::cin.clear();
std::cin.sync();
}
}
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 在java中解决这段代码时面临循环中的问题
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 退出简单while循环时出现问题
- 循环无限运行C++解决骑士之旅问题
- Visual Studio 2017循环自动向量化问题
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 嵌套While循环不起作用(C++问题)
- 使用 GMP 的 while 循环出现问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- OpenMP for 循环并行性问题
- 这个返回元素位置的基于循环的函数有什么问题?
- 为什么循环会导致指针出现问题?
- 使用基于范围的循环迭代矢量时出现问题
- 在 c++ 中循环遍历数组时遇到问题
- 运行无限循环的最小二叉树问题
- 在C++中循环访问自定义结构列表的小问题
- 在 for 循环中更新两个变量时遇到问题C++