调试时CLION标准输入

use*_*301 25 c++ clion

我想要做的基本上是:

./myProgram < myData.txt

我正在使用CLion IDE进行调试.我只是找不到这样做的选择.

一个类似的问题 - 但特定于MSVS的产品

Arn*_*and 22

我有同样的问题,似乎CLion还没有处理标准输入.

我通过在运行程序之前更改输入流来解决这个问题.

例如,如果要在stdin中输入文件流,可以在main中写入:

std::ifstream in("ABSOLUTE_PATH_TO_YOUR_FILE");
std::cin.rdbuf(in.rdbuf());
Run Code Online (Sandbox Code Playgroud)

然后,您可以找到一种方法来根据需要切换此流更改.请注意,对于文件,您需要提供绝对路径,因为应用程序是从与当前目录不同的目录运行的.

我希望这可以帮助,直到clion提供真正的解决方案.

  • 如果你不想用文件做,请记住你可以使用`stringstream`s (2认同)

Ofe*_*lon 8

从 CLion 2020.1 开始,此功能内置于

输入重定向

如果您需要将输入从文件重定向到应用程序的标准输入,现在就可以这样做。在配置中使用名为“重定向输入”的新字段。进入:

  • 相对路径(CLion 将在前面添加工作目录路径)。
  • 绝对路径(将重新映射以进行远程配置)。
  • 或宏(如 FilePrompt)。 在此输入图像描述


Jua*_*eni 6

假设您的输入文件是myData.txt,您可以使用重新打开/重用stdinfreopen

freopen("myData.txt","r",stdin);

如果你想对你的输出做同样的事情:

freopen("myOutput.txt","w",stdout);

这适用于std :: cin,printf等...

您可以在此处找到有关此内容的更多信息:http://www.cplusplus.com/reference/cstdio/freopen/


顺便说一句,已经有一个功能请求.如果您有兴趣,可以在这里投票,以便优先考虑:https: //youtrack.jetbrains.com/issue/CPP-3153