返回一個值時,如果我有以下兩種功能差異()從一個函數
std::string foo1()
{
std::string temp;
...
return temp;
}
和
const char* foo2()
{
std::string temp;
...
return temp.c_str();
}
而這需要一個const char *作爲輸入的函數;
void bar(const char* input) { ... }
哪一個是比較安全的事:
bar(foo1().c_str());
或
bar(foo2());
如果所有我想要做的就是傳遞一個字符串作爲輸入欄,然後不關心foo
函數的返回值是否真的很重要?
感謝您的所有答案,我不會在C中做這樣的事情(我會返回一個malloc'ed指針),但我不確定C++在後臺執行何種操作時轉換std :: string到一個const char *。 – Nobilis
如果有幫助,在C++中'std :: string'就等於malloc'ed指針。它只是自動釋放和strcpy等等。 C++需要一種與C完全不同的思維方式。 –
這就是我對它的想法,並且自己也認爲這是返回c_str()的情況:) – Nobilis