void Foo::bar(const std::string& foobar) {
// ...
const char* foobar2 = (char*)foobar;
// ...
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我在编译期间遇到有关无效转换的错误.
有没有其他方式转换std::string为const char*?
wkl*_*wkl 11
std::string::c_str()获取const char*指向表示字符串的字符数组的指针(以null结尾).
您不应该操纵此指针指向的数据,因此如果您需要这样做,请复制数据.
双重编辑 - 以更加C++的方式进行
因为在可能的情况下避免使用原始指针和数组更好,所以您也可以将数据放入 std::vector<char>
#include <string>
#include <vector>
int main()
{
std::string str = "Hello";
std::vector<char> cvec(str.begin(), str.end());
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
编辑这更像是C,因为它使用原始指针并显式分配mem
#include <string>
#include <cstring>
int main()
{
std::string str = "Hello";
char *cptr = new char[str.size()+1]; // +1 to account for \0 byte
std::strncpy(cptr, str.c_str(), str.size());
// do stuff...
delete [] cptr;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46657 次 |
| 最近记录: |