Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
main()能否在所有cout都写入控制台之前返回? 我试图在R脚本中跟踪一个错误,它调用C++程序。R告诉我,我的C++返回NA,但是当我浏览程序时,情况似乎不一样。在R中没有任何调用会导致NA。因此,我的问题是,如果R可能永远不会捕获来自C++程序的输出,因为在所有输出已经写入控制台之前,调用返回0 < /C> >。_C++_R_Execution Time - Fatal编程技术网

main()能否在所有cout都写入控制台之前返回? 我试图在R脚本中跟踪一个错误,它调用C++程序。R告诉我,我的C++返回NA,但是当我浏览程序时,情况似乎不一样。在R中没有任何调用会导致NA。因此,我的问题是,如果R可能永远不会捕获来自C++程序的输出,因为在所有输出已经写入控制台之前,调用返回0 < /C> >。

main()能否在所有cout都写入控制台之前返回? 我试图在R脚本中跟踪一个错误,它调用C++程序。R告诉我,我的C++返回NA,但是当我浏览程序时,情况似乎不一样。在R中没有任何调用会导致NA。因此,我的问题是,如果R可能永远不会捕获来自C++程序的输出,因为在所有输出已经写入控制台之前,调用返回0 < /C> >。,c++,r,execution-time,C++,R,Execution Time,我的程序会向控制台写入一些数字。每行一个数字,最后一行以endl结尾 main() { cout<<33.12<<"\n"; //print a couple of number to cout cout<<9711.3<<"\n"<<5699.14<<endl; return 0; } main() { cout一般来说,是的,在main()结束之前可能有部分输出尚未刷新。但是,在程序结束时,无论如何都应该刷新所有内容

我的程序会向控制台写入一些数字。每行一个数字,最后一行以
endl
结尾

main()
{
cout<<33.12<<"\n"; //print a couple of number to cout
cout<<9711.3<<"\n"<<5699.14<<endl;
return 0;
}
main()
{

cout一般来说,是的,在main()结束之前可能有部分输出尚未刷新。但是,在程序结束时,无论如何都应该刷新所有内容

更详细地说,main只是一个函数,对于程序员来说,这是程序的入口点,尽管实际上运行时在调用之前/之后做了一些事情。这包括加载共享对象、调用全局变量的析构函数以及一些作为普通程序员实际上不应该知道的其他事情

由于std::cout是一个全局对象,它将使用其析构函数来刷新正确的数据。尽管大多数实现都会刷新“\n”字符(我认为不需要),std::endl和std::flush(我认为这是必需的),但无论如何,这个示例应该是好的


我会尝试拆分这个问题,然后尝试将C++程序的输出推到文件之后读取(既来自同一个R程序),也可以尝试控制台输入…

一般,是的,可能有一部分输出在主结束之前没有被刷新().然而,在程序结束时,无论如何都应该刷新所有内容

更详细地说,main只是一个函数,对于程序员来说,这是程序的入口点,尽管实际上运行时在调用之前/之后做了一些事情。这包括加载共享对象、调用全局变量的析构函数以及一些作为普通程序员实际上不应该知道的其他事情

由于std::cout是一个全局对象,它将使用其析构函数来刷新正确的数据。尽管大多数实现都会刷新“\n”字符(我认为不需要),std::endl和std::flush(我认为这是必需的),但无论如何,这个示例应该是好的


<>我会尝试拆分这个问题,然后尝试把C++程序的输出推到文件之后再读取(这两个程序都来自同一个R程序),尝试控制台输入…

应该刷新
endl
,如果不是
cout
,应该在程序退出时刷新。也就是说,您的示例是不可编译的,这意味着这可能是一个过度减少的MCVE,这里可能会有更多的情况。提供的示例对我来说是正确的。请确保您的MCVE实际重现了在发布它们之前,请检查问题。
endl
应该已经刷新,如果不是
cout
应该在程序退出时刷新。也就是说,您的示例是不可编译的,这暗示这可能是一个过度减少的MCVE,这里可能会有更多的问题。提供的示例对我来说是正确的。请确保您的MCVE实际重现在发布它们之前解决问题。
x <- as.numeric(system("./myProgram", intern=T))
if(any(is.na(x))) {
    stop("Wooppp, x is NA: ", x)
}