0

因此,我编写了一个程序,该程序在从文件中获取输入时按预期运行,但会引发“超出运行时间”错误(我正在使用 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;
   }
4

1 回答 1

2

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

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

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

如果您的代码使用输入和输出流。读取要刷新的std::cinstd::cout(以确保用户问题反映输入问题)。如果两者没有联系,这可能是低效的。所以解开它们,

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

最好使用'\n'overstd::endl以避免额外的冲洗。

于 2018-10-02T06:27:44.877 回答