本文翻译自:std::string to char*
I want to convert a std::string into a char* or char[] data type. 我想将std :: string转换为char *或char []数据类型。
std::string str = "string";
char* chr = str;
Results in: “error: cannot convert 'std::string' to 'char' ...” . 结果: “错误:无法将'std :: string'转换为'char'...” 。
What methods are there available to do this? 有什么方法可以做到这一点?
#1楼
参考:https://stackoom.com/question/UqcF/std-string-to-char
#2楼
More details here , and here but you can use 更多细节在这里 ,并在这里 ,但你可以使用
string str = "some string" ;
char *cstr = &str[0];
#3楼
For completeness' sake, don't forget std::string::copy()
. 为了完整起见,不要忘记std::string::copy()
。
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
str.copy(chrs, MAX);
std::string::copy()
doesn't NUL terminate. std::string::copy()
没有终止NUL。 If you need to ensure a NUL terminator for use in C string functions: 如果需要确保在C字符串函数中使用NUL终止符:
std::string str = "string";
const size_t MAX = 80;
char chrs[MAX];
memset(chrs, '\0', MAX);
str.copy(chrs, MAX-1);
#4楼
This will also work 这也行
std::string s;
std::cout<<"Enter the String";
std::getline(std::cin, s);
char *a=new char[s.size()+1];
a[s.size()]=0;
memcpy(a,s.c_str(),s.size());
std::cout<<a;
#5楼
char* result = strcpy((char*)malloc(str.length()+1), str.c_str());
#6楼
Alternatively , you can use vectors to get a writable char* as demonstrated below; 或者,您可以使用向量来获取可写的char *,如下所示;
//this handles memory manipulations and is more convenient
string str;
vector <char> writable (str.begin (), str.end) ;
writable .push_back ('\0');
char* cstring = &writable[0] //or &*writable.begin ()
//Goodluck