读取cin时超出运行时间,但从文件读取时未超出运行时间吗?

时间:2018-10-02 04:37:43

标签: 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;
   }

1 个答案:

答案 0 :(得分:2)

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

默认情况下,C ++ std::cinstd::cout链接到C流。要使它们保持同步很昂贵。如果您不使用C流,则没有必要。要删除此费用,请取消链接:

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

如果您的代码使用输入和输出流。从std::cin读取将强制刷新std::cout(以确保用户问题反映了输入问题)。如果两者未链接,则效率可能很低。所以解开他们,

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

'\n'相比,更喜欢使用std::endl,以避免额外的冲洗。