我需要連接寫入函數中的參數。我將如何做到這一點?在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 :: string,你可以簡單地使用newFolder + "/newfile.txt"
。但您必須確保newFolder
不會以/
或\
結束。如果在write
函數中需要char *,則可能需要在std :: string上使用c_str()
函數。
將「std :: string」與「字符串字面量」或「C風格字符串」區分開來會很好。只有'std :: string'支持運算符'+'。 – 2012-03-29 14:00:26
@Robᵩ你是對的;完成。 – 2012-03-30 18:18:42
雖然使用std::string
是首選方法,但要小心,因爲舊版本的標準庫不支持採用std::string
作爲參數的open
方法。
如果您在使用時std::string
得到調用open
錯誤,那麼你必須做的兩個步驟:
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 2012-03-29 05:47:33
@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)。 – 2012-03-29 05:51:39
'的std :: string'支持'+'經營者,你試試吧? – littleadv 2012-03-29 05:13:44