0

rank各ノードが整数である独自の を知っている mpi プログラムを作成しようとしています。

このプログラムでは、各ノードが.txtそのファイル名を含むファイルを作成することを望んrankでいます。つまり、rank.txtrank が整数であるという名前のファイルをプログラムが生成することを願っています。

intをに変換する方法は知っていますが、その文字列をと組み合わせてファイル名に入れるstring方法についてはかなり混乱しています。.txtそれを行う最も簡単な方法は何ですか?

前もって感謝します。

編集

数字を組み合わせて.txt文字列に入れましたfilenameが、入力 std::ofstream out_stream(filename)するとコンパイラはそれを教えてくれます

no matching constructor for initialization `std::outstream`

文字列をファイル名に入れるにはどうすればよいですか?

4

5 に答える 5

2

問題は、 を受け取るコンストラクターがないことstd::ofstreamですstd::string。を渡す必要がconst char*あるので、次のように言ってください。

std::ofstream out_stream(filename.c_str());

ただし、最新の標準リビジョンでは状況が変わっているため、C++11 を有効にする方法については、コンパイラのドキュメントを確認してください。

于 2012-11-01T13:55:52.930 に答える
1

すでに を に変換しintている場合std::string、たとえばrank_srank_s + ".txt"十分です。

于 2012-11-01T13:39:13.950 に答える
1

ブーストを使用できる場合:

std::string filename = boost::lexical_cast<std::string>(rank) + ".txt";

それ以外の場合 (例):

std::ostringstream s;
s << rank;
std::string filename = s.str() + ".txt";
于 2012-11-01T13:42:12.687 に答える
1

fstream と << 演算子を使用します。文字列連結の場合:

 std::stringstream vIndex; 
 vIndex << i;  
 std::string index = vIndex.str() + ".txt";
于 2012-11-01T13:41:05.197 に答える
0
std::string filename = std::to_string(i) + ".txt";

このためにc++11をサポートする最新のコンパイラが必要です

質問に答えるために編集:-

c ++ 11をお持ちの場合は、

std::ofstream out_stream(std::to_string(i) + ".txt");

そうでない場合は、他の答えを見るのが一番です

于 2012-11-01T13:46:18.050 に答える