【问题标题】:Qt reading from console and stop when Enter has pressedQt 从控制台读取并在按下 Enter 时停止
【发布时间】: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::getlineQTextStream equivalent
  • 另外,请不要将您的流命名为cincout。这会让代码的读者和维护者非常感到困惑!
  • 顺便问一下,您使用QTextStream 对象而不是普通的std::cinstd::cout 的原因是什么?
  • 我没有看到循环,所以我没有看到代码的相关部分。提供更多上下文。

标签: c++ qt text input console


【解决方案1】:

对于 QT,您可以使用 QTextStream::readLine

您也可以将std::getline 与普通的std::cinstd::cout 一起使用。

【讨论】:

    【解决方案2】:

    我找到的唯一方法是转到 Qt Creator 上的项目选项卡,运行,然后检查“在终端中”运行(在“工作目录”下)。这只会在识别回车键的外部终端中运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 2013-11-20
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多