2012-03-29 3 views
0

書き込み関数のパラメータを連結する必要があります。どうすればいい?C++で書き込みパラメータを連結する

例:ofstream write(newFolder concat "/newfile.txt");

mkdir(newFolder); 
ofstream write (wantTo "concat here"); 
write << "Sup mo fo"; 
write.close(); 
+1

'のstd :: STRING'は' + '演算子をサポートし、あなたはそれを試してみました? – littleadv

答えて

1

newFolderがのstd ::文字列である場合は、単にnewFolder + "/newfile.txt"を使用することができます。 newFolder/または\で終わらないようにする必要があります。 write関数でchar *が必要な場合は、std :: stringでc_str()関数を使用する必要があります。

+0

"std :: string"と "string literal"または "C-style string"を区別するとよいでしょう。 'std :: string'だけが演算子' + 'をサポートしています。 –

+0

@Robᵩあなたは正しいです。完了しました。 –

0

std::stringを使用するのが好ましい方法ですが、標準ライブラリの古いバージョンでは、std::stringを引数とするopenメソッドをサポートしていないため、注意してください。

std::stringを使用しているときにopenへの呼び出し中にエラーが出る場合は、次の2つのステップでそれをしなければならない。

std::string newFolder = "/path/to/folder"; 
mkdir(newFolder.c_str(), 0644); // The 'mkdir' function wants 'const char *' 

// Has to concatenate strings here if your standard library is too old 
std::string folderAndFile = newFilder + "/filename"; 

std::ofstream output(folderAndfile.c_str()); 
+0

mkdir呼び出しの 'const char *'部分について説明できますか? – Cjueden

+0

@Cjuedenシステムコール 'mkdir'は古いC関数であり、' std :: string'のようなC++クラスについては知らない。 [mkdirのマニュアルページ](http://linux.die.net/man/2/mkdir)を見ると、path引数の型が 'const char *'型であることがわかります。これは[ 'std :: string :: c_str'](http://en.cppreference.com/w/cpp/string/basic_string/c_str)を参照してください。 –

関連する問題