を変換する、再利用できるユーティリティ クラスを構築しようとしていますstd::string to a char*
。
char* Foo::stringConvert(std::string str){
std::string newstr = str;
// Convert std::string to char*
boost::scoped_array<char> writable(new char[newstr.size() + 1]);
std::copy(newstr.begin(), newstr.end(), writable.get());
writable[newstr.size()] = '\0';
// Get the char* from the modified std::string
return writable.get();
}
このコードは、stringConvert 関数内から出力を読み込もうとしたときに機能しますが、アプリケーションの他の部分で使用すると、この関数はガベージを返します。
例えば:
Foo foo;
char* bar = foo.stringConvert(str);
上記のコードはガベージを返します。この種の問題に対する回避策はありますか?