gpt4 book ai didi

C++ 循环 I/O 问题

转载 作者:行者123 更新时间:2023-11-30 04:05:22 25 4
gpt4 key购买 nike

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
}

关于C++ 循环 I/O 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23315904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com