相信很多人都遇到过这样一个错误:‘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,本文就这样,有什么不对的地方请指正。

发表评论

电子邮件地址不会被公开。 必填项已用*标注