我正在尝试构建一个可以重用的实用程序类,它可以转换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);
上面的代码返回垃圾。 这类问题有解决办法吗?
答案 0 :(得分:2)
我将假设writable
是一个具有自动持续时间的对象,它会破坏它在析构函数中包含的char*
- 这就是你的问题 - 无论writable.get()
返回什么不再有效。
只需返回std::string
,为什么你需要原始char *
?
答案 1 :(得分:1)
为什么不使用std::string.c_str()
?这是一种库方法,可以满足您的需求。