我想将std::string转换为char*或char[]数据类型。
std::string str = "string";
char* chr = str;
结果:"错误:不能转换' std::string '到' char '…"
有什么方法可以做到这一点?
我想将std::string转换为char*或char[]数据类型。
std::string str = "string";
char* chr = str;
结果:"错误:不能转换' std::string '到' char '…"
有什么方法可以做到这一点?
当前回答
(这个答案只适用于c++ 98。)
请不要使用原始的char*。
std::string str = "string";
std::vector<char> chars(str.c_str(), str.c_str() + str.size() + 1u);
// use &chars[0] as a char*
其他回答
没有人提到过sprintf?
std::string s;
char * c;
sprintf(c, "%s", s.c_str());
你可以使用迭代器。
std::string str = "string";
std::string::iterator p=str.begin();
char* chr = &(*p);
祝你好运。
char* result = strcpy((char*)malloc(str.length()+1), str.c_str());
OOP风格的转换
converter.hpp
class StringConverter {
public: static char * strToChar(std::string str);
};
converter.cpp
char * StringConverter::strToChar(std::string str)
{
return (char*)str.c_str();
}
使用
StringConverter::strToChar("converted string")
为了完整起见,不要忘记std::string::copy()。
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
str.copy(chrs, MAX);
std::string::copy()不终止NUL。如果你需要确保在C字符串函数中使用NUL终止符:
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
memset(chrs, '\0', MAX);
str.copy(chrs, MAX-1);