📜  在C++中将字符串转换为char数组

📅  最后修改于: 2021-05-30 07:48:55             🧑  作者: Mango

我们许多人遇到错误“无法将std ::字符串转换为char []或char *数据类型”
例子:

Input : string s = "geeksforgeeks" ;
Output : char s[] = { 'g', 'e', 'e', 'k', 's', 'f', 'o',
                     'r', 'g', 'e', 'e', 'k', 's' } ;
Input : string s = "coding" ;
Output : char s[] = { 'c', 'o', 'd', 'i', 'n', 'g' } ;

方法1
一种方法是将字符串的内容复制到char数组。这可以借助库cstring的c_str()和strcpy()函数来完成。
c_str()函数用于返回指向数组的指针,该数组包含以空终止的字符序列,该字符串表示字符串的当前值。
句法:

const char* c_str() const ;

如果抛出异常,则字符串中没有任何变化。但是,当我们需要查找或访问各个元素时,可以使用strcpy()函数将其复制到char数组中。复制后,我们可以像使用简单数组一样使用它。
采用的char数组的长度不应小于输入字符串的长度。

CPP
// CPP program to convert string
// to char array
#include 
#include 
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string s = "geeksforgeeks";
 
    int n = s.length();
 
    // declaring character array
    char char_array[n + 1];
 
    // copying the contents of the
    // string to char array
    strcpy(char_array, s.c_str());
 
    for (int i = 0; i < n; i++)
        cout << char_array[i];
 
    return 0;
}


CPP
// CPP program to convert string
// to char array
#include 
#include 
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string s("geeksforgeeks");
    // declaring character array : p
    char p[s.length()];
 
    int i;
    for (i = 0; i < sizeof(p); i++) {
        p[i] = s[i];
        cout << p[i];
    }
    return 0;
}


C++14
// CPP program for the above approach
#include 
#include 
#include 
using namespace std;
 
// Driver Code
int main()
{
    char* char_arr;
    string str_obj("GeeksForGeeks");
    char_arr = &str_obj[0];
    cout << char_arr;
    return 0;
}


输出:

geeksforgeeks

方法2:

CPP

// CPP program to convert string
// to char array
#include 
#include 
 
using namespace std;
 
// driver code
int main()
{
    // assigning value to string s
    string s("geeksforgeeks");
    // declaring character array : p
    char p[s.length()];
 
    int i;
    for (i = 0; i < sizeof(p); i++) {
        p[i] = s[i];
        cout << p[i];
    }
    return 0;
}

输出:

geeksforgeeks

方法3:

这是最简单,最有效的广告。我们可以直接将字符串的第一个字符的地址分配给char的指针。除非您的逻辑需要该字符串的副本,否则这应该是首选方法。

C++ 14

// CPP program for the above approach
#include 
#include 
#include 
using namespace std;
 
// Driver Code
int main()
{
    char* char_arr;
    string str_obj("GeeksForGeeks");
    char_arr = &str_obj[0];
    cout << char_arr;
    return 0;
}
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”