有人知道..如何在Netbeans中将文件读取到STDIN 我在Netbeans中遇到了问题。该计划的工作方式如下:
./myprog < in.txt
这是一个C ++项目。 任何想法?
编辑:我有Proglems设置netbeans。我在哪里可以说:阅读/使用这个文件? 在控制台上,它工作正常!
答案 0 :(得分:3)
我不相信有一种方法可以让NetBeans将输入管道传输到您的程序(该功能由您的shell处理)。如果要在IDE中测试或调试程序,最好的方法是允许它将文件名作为参数,或者如果没有给出文件名,则返回标准输入。然后,您可以调整项目运行配置并提供测试文件名作为参数。
请注意,如果您尝试在运行配置中使用“&lt; file”,那么它将直接传递给您的程序,因为没有shell拦截它。
[编辑]我找到了一种方法,虽然它有点弱。
NetBeans(至少在我的Mac上)通过名为dorun.sh的脚本运行C ++程序,该脚本位于我的主目录下的.netbeans文件夹下。它包括一条接近末尾的线:
“$ pgm”“$ @”
引号转义&lt;&lt;您的项目属性中的运算符,因此您可以删除引号(并接受后果),或包含&lt;他们之间:
“$ pgm”&lt; “$ @”
并简单地包含文件名作为参数。
如果你不知道在哪里找到参数,它就在项目属性中,不在文件菜单中。
如果您在Windows上使用NetBeans,我不确定它用于启动程序的脚本(如果有)。另请注意,如果使用输出窗口而不是外部终端(此设置位于同一窗口中),则不起作用。
[编辑编辑]在尝试调试程序时也不行......最好只修改代码来处理从文件或stdin读取的内容。
答案 1 :(得分:3)
我同意JimG关于处理此问题的最佳方法(通过文件名作为参数,如果没有则返回stdin)。您还可以通过make标志将标志传递给代码,并在代码中有条件地使用freopen,如下所示:
#ifdef NETBEANS
freopen("input.txt", "r", stdin);
#endif
然后在项目属性中 - &gt;构建 - &gt;制作 - &gt;构建命令,您可以执行以下操作:
${MAKE} -f Makefile "DEBUG_FLAGS=-DNETBEANS"
你的Makefile显然必须传递DEBUG_FLAGS,如下所示:
.cpp.o: $<
$(CC) $(DEBUG_FLAGS) $(CFLAGS) $(INCLUDES) -o $@ $<
我使用这种方法,因为我总是在netbeans内外使用相同的再生make文件,并且它是代码本身的3行修复。我想解析cmdline只是在一个地方,但是对于他自己的每一个。
答案 2 :(得分:1)
Actualy刚刚在C ++项目中使用Ubuntu linux下的netbeans 8有同样的问题。
现在您可以将文件作为输入参数传递,您只需要以正确的方式执行:
在File->Project Properties->Run->Run Command
下
加上这个:
"${OUTPUT_PATH}" "./main"< "/home/user/projects/C/tests.in"
逗号之间的第二部分是文件的完整路径。 它甚至在调试时使用 - 非常有用。
答案 3 :(得分:0)
您是否可以访问NetBeans IDE中的常规标准库类?如果是这样,通常使用cin
实例访问STDIN:
std::string line;
while (std::getline(cin, line))
{
// do something with line...
}
答案 4 :(得分:0)
据我所知,Netbeans只是一个IDE,它可以配置为使用一些不同的编译器。您的代码应该根据编译器的期望进行编码,但是如果您使用标准库,则不应该有任何问题。