書き込み関数のパラメータを連結する必要があります。どうすればいい?C++で書き込みパラメータを連結する
例:ofstream write(newFolder concat "/newfile.txt");
mkdir(newFolder);
ofstream write (wantTo "concat here");
write << "Sup mo fo";
write.close();
書き込み関数のパラメータを連結する必要があります。どうすればいい?C++で書き込みパラメータを連結する
例:ofstream write(newFolder concat "/newfile.txt");
mkdir(newFolder);
ofstream write (wantTo "concat here");
write << "Sup mo fo";
write.close();
newFolder
がのstd ::文字列である場合は、単にnewFolder + "/newfile.txt"
を使用することができます。 newFolder
が/
または\
で終わらないようにする必要があります。 write
関数でchar *が必要な場合は、std :: stringでc_str()
関数を使用する必要があります。
"std :: string"と "string literal"または "C-style string"を区別するとよいでしょう。 'std :: string'だけが演算子' + 'をサポートしています。 –
@Robᵩあなたは正しいです。完了しました。 –
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());
mkdir呼び出しの 'const char *'部分について説明できますか? – Cjueden
@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)を参照してください。 –
'のstd :: STRING'は' + '演算子をサポートし、あなたはそれを試してみました? – littleadv