我正在用MPI编写一个C++程序(C接口,没有提升等)。在我的程序中,我有许多输出,可以输出到文件,也可以只输入0级。是否有避免 写入if (rank == 0) cout << string
的好方法?避免重复if语句在C++中的C++ MPI
但是也有一些我的电脑我的MPI实现的工作方式有两种,但都有些站不住脚对我说:
if (rank != 0)
cout.setstate(ios_base::badbit);
这样有效地禁止所有等级,但0输出,但允许吗?如果我这样做会有问题吗?
另一个想法是创建一个未打开的ofstream,并将输出重定向到那里。
ostream* os;
ofstream nullstream;
if (rank == 0)
os = &cout;
else
os = &nullstream;
*os << "rank " << rank << endl;
这使得处于错误状态nullstream,而且也有效地禁止在不是所有的行列输出0 ...
这个问题似乎常见于我,所以我很抱歉,如果它是已经在其他地方回答了。我没有通过搜索找到答案,并且很高兴对任何现有问题进行重定向。