所以我编写了一个程序,它在从文件中获取输入时按预期运行,但会抛出“超出运行时”错误(我使用的是 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::cin
和 std::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/