相信很多人都遇到过这样一个错误:‘cannot convert std::string to char[] or char* data type’。
示例:
输入 : string s = “linuxmi” ;
输出 : char s[] = { ‘l’, ‘i’, ‘n’, ‘u’, ‘x’, ‘m’, ‘i’ } ;
输入 : string s = “python” ;
输出 : char s[] = { ‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’ } ;
一种方法是将字符串的内容复制到char数组中。这可以在c_str()和strcpy()函数的帮助下实现。
c_str()函数用于返回一个指向数组的指针,该数组包含一个以空结尾的字符序列,该序列表示字符串的当前值。
语法:
const char* c_str() const ;
如果抛出异常,则字符串中没有任何更改。但是,当需要查找或访问单个元素时,我们可以使用strcpy()函数将其复制到char数组中。在复制它之后,我们可以像使用一个简单的数组一样使用它。
获取的字符数组的长度不应小于输入字符串的长度。
// string转换到char数组CPP程序
#include <bits/stdc++.h>
using namespace std;
// 驱动代码
int main()
{
// 为字符串赋值
string s = "www.linuxmi.com";
int n = s.length();
//声明char数组
char char_array[n + 1];
// 将string 的内容复制到char数组中
strcpy(char_array, s.c_str());
for (int i = 0; i < n; i++)
cout << char_array[i];
cout<<"\n";
return 0;
}
输出:
www.linuxmi.com

另一种方法:
// 转换 string 到char数组CPP程序
#include <iostream>
#include <string.h>
using namespace std;
//驱动程序代码
int main()
{
// 为字符串赋值
string s("www.linuxmi.com");
// 声明字符数组 : p
char p[s.length()];
int i;
for (i = 0; i < sizeof(p); i++) {
p[i] = s[i];
cout << p[i];
}
cout << "\n";
return 0;
}
输出:
www.linuxmi.com

OK,本文就这样,有什么不对的地方请指正。