我正在用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 ...
這個問題似乎常見於我,所以我很抱歉,如果它是已經在其他地方回答了。我沒有通過搜索找到答案,並且很高興對任何現有問題進行重定向。