具有输入流的在线C++编译器?

18

快速测试codepad显示它似乎很好地支持输入和输出(字符串)流(请参见:http://codepad.org/YstAFSu5)。 - Chad
1
@Chad:你不小心错过了它说“但我想使用一些scanf”的部分。 - sehe
1
我有一个“hackish”半玩笑解决方案。事实证明,有一个输入文件,你可以在某种程度上依赖它,并且你可以完全控制... - sehe
1
@sehe:不错,有点像反向quine。 - Phil Miller
1
http://cpp.sh/ 支持 scanf() - user31782
5个回答

10

IDEOne 支持传递输入;您可以在 <textarea> 中指定它。


@Xeo:您可以在编译后指定替代输入并再次运行(后编译)。也许您只是想说它不是_终端仿真_(交互式)(但那不是完全的问题)。 - sehe
@sehe:是的,那就是我想说的。在运行代码后,我往往会忘记底部的输入窗口。 - Xeo

9

[免责声明:我更喜欢ideone.com(也支持c++0x)]

非常严谨地说,您可以通过使用以下恶劣的技巧将输入放入源文件中:

http://codepad.org/fjtHRgof

/* just skip the first two (!!!) lines when reading from t.cpp
602.030024387
423.927317911
520.43881927
131.655014874
35.7455352247
548.735653436
714.556123804
876.948673754
379.105540406
885.096900058
192.734103705
116.365922766
363.998415895
216.268387112
958.684513705

*/ // end of fake input

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    std::ifstream ifs("t.cpp");
    std::cout << ifs.rdbuf() << std::flush;
}

我们如何将其扩展到其他编程语言?我在想这种方法是否适用于C语言。 - nikhil
@nikhil,直接使用C语言特定的文件IO吗?例如fopen()等? - toficofi

2

Rextester也有一个输入框,并且它的界面比ideone更易用,我一直觉得后者非常笨重。

Coliru允许您使用多个文件,因此您可以创建一个包含数据的文件,并像这样将其输入到程序中:

g++ -std=c++11 -W -Wall main.cpp && cat /Archive/{{id}}/main.cpp | a.out

注意,LWS 也有一个漂亮的界面和输入框,但它已经处于只读模式一段时间了,如果有可能,也不清楚它何时会重新上线。

1
您可以尝试 http://optimizedbits.com。在那里,您还可以通过提供自己的多个输入流来编译代码。
对于单个输入流,只需编写输入即可。对于多个输入测试用例,请按照以下步骤进行:
input1
<TESTCASE>
input2
<TESTCASE>
....

关于输入流的可能性:没有人会自己构建编译器。每个人都使用一些标准,如后端中的gcc。所有在线编译器网站都围绕以下流程进行架构(例如:C ++):

1) read_code_user
2) Save it as variablename.cpp
3) Use a queuing framework. Then execute g++ variablename.cpp. Further, various libraries are utilized which can pipe stdin, stdout and stderr. 

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接