【发布时间】:2017-08-02 12:20:24
【问题描述】:
QTextStream cin(stdin);
QTextStream cout(stdout);
QString path;
cout << "Set directory to save configuration file: ";
cout.flush();
// path = cin.readLine();
cin >> path;
这里是代码。当您需要在控制台中输入一些文本时,它可以正常工作。它打印消息,然后等待,直到您写一些文本,然后按 Enter 键。 BUT,如果您不想输入任何文本并且想将 path 字符串留空,则此代码不会接近:它不会将 Enter 识别为 end行/新行,所以如果你尝试在不写任何文本的情况下按 Enter,光标只会切换到下一行,程序仍然会等到你写东西。
那么,如果 path 字符串为空,是否有任何方法可以识别 Enter 键 NO MATTER?很简单:按 Enter 键 - 程序停止从控制台读取。
【问题讨论】:
-
你试过
std::getline吗? -
还是
std::getline的QTextStreamequivalent? -
另外,请不要将您的流命名为
cin和cout。这会让代码的读者和维护者非常感到困惑! -
顺便问一下,您使用
QTextStream对象而不是普通的std::cin和std::cout的原因是什么? -
我没有看到循环,所以我没有看到代码的相关部分。提供更多上下文。