c++ - 读取 cin 时超出运行时间但从文件读取时未超出运行时间?

标签 c++ file input io runtime

所以我编写了一个程序,它在从文件中获取输入时按预期运行,但会抛出“超出运行时”错误(我使用的是 onlinegdb)。两种情况下的输入都是这样分开的:

```
input
```

我将它复制到一个文本文件中并且它可以工作,但是在屏幕底部将输入作为标准输入输入不起作用。我也可以输入到控制台,这也可以正常工作。我的 readFromFile 函数是相同的函数,但使用文件 I/O 函数而不是 cin。这是我第一次真正尝试输入/输出。请帮忙!!

   void readFromInput() {
     string Word;
     int count = 0;
     while (cin >> Word) {
       if (Word == "```") {
           count++;
       }
       if (count == 2) {break;} //exit after recieving opening and closing ```
       if (Word == "Add") {
         //do stuff
       }
       if (Word == "Charge") {
         //do stuff
       }
       if (Word == "Credit") {
         //do stuff
       }
     }
     return;
   }

最佳答案

有一些标准输入/输出的特殊功能不适用于普通文件流:

C++ std::cinstd::cout 默认链接到 C 流。保持这些同步是昂贵的。如果您不使用 C 流,则没有必要。要删除此费用,请取消链接:

int main()
{
    std::ios::sync_with_stdio(false);
}

如果您的代码使用输入和输出流。从 std::cin 读取强制刷新 std::cout(以确保用户问题反射(reflect)输入问题)。如果两者没有链接,这可能是低效的。所以解开它们,

int main()
{
    std::cin.tie(nullptr);
}

优先使用 '\n' 而不是 std::endl 以避免额外的刷新。

关于c++ - 读取 cin 时超出运行时间但从文件读取时未超出运行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602110/

相关文章:

C++ CodeLite 启用多线程?

c++ - 蒙特卡洛法计算圆周率

c++ - 当子类定义新的成员变量时,我可以避免 dynamic_cast 吗?

c++ vectors - 使用 find(begin, end, term)

file - 将图像保存在 Azure 存储中

file - Bash:逐行传递文件中的参数

html - 使输入框不溢出窗口宽度

python - 如何在Python中使用shell命令分割文件

c - 为什么文件描述符 1 和 2 可以在手动输入时读取,但在输入重定向时却不能读取?

php - 使用 $_POST 数据创建新的 html 表单值