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

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

本文介绍如何在C++中将字符数组转换为字符串。

C++中的std ::字符串具有许多内置函数,这使实现比处理字符数组要容易得多。因此,如果将字符数组转换为字符串,通常会更容易工作。

例子:

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

Input: char s[] = { 'c', 'o', 'd', 'i', 'n', 'g' } ;
Output: string s = "coding" ;
  • 方法1:
    方法:
    1. 获取字符数组及其大小。
    2. 创建一个空字符串。
    3. 遍历字符数组。
    4. 当你迭代继续我们串接的字符数组的字符串中遇到的字符。
    5. 返回字符串。

    下面是上述方法的实现。

    // Demonstrates conversion
    // from character array to string
      
    #include 
    using namespace std;
      
    // converts character array
    // to string and returns it
    string convertToString(char* a, int size)
    {
        int i;
        string s = "";
        for (i = 0; i < size; i++) {
            s = s + a[i];
        }
        return s;
    }
      
    // Driver code
    int main()
    {
        char a[] = { 'C', 'O', 'D', 'E' };
        char b[] = "geeksforgeeks";
      
        int a_size = sizeof(a) / sizeof(char);
        int b_size = sizeof(b) / sizeof(char);
      
        string s_a = convertToString(a, a_size);
        string s_b = convertToString(b, b_size);
      
        cout << s_a << endl;
        cout << s_b << endl;
      
        return 0;
    }
    
    输出:
    CODE
    geeksforgeeks
    
  • 方法2:
    std ::字符串具有内置的构造函数,可以为我们完成工作。此构造函数将以空终止的字符序列作为输入。但是,我们只能在声明字符串时使用此方法,并且不能再次用于同一字符串,因为它使用仅在声明字符串时才调用的构造函数。

    方法:

    1. 获取字符数组及其大小。
    2. 声明一个字符串(即字符串类的一个对象),同时将字符数组作为其构造函数的参数。
    3. 使用语法: 字符串 string_name(character_array_name);
    4. 返回字符串。

    下面是上述方法的实现。

    // Demonstrates conversion
    // from character array to string
      
    #include 
    using namespace std;
      
    // uses the constructor in string class
    // to convert character array to string
    string convertToString(char* a, int size)
    {
        string s(a);
      
        // we cannot use this technique again
        // to store something in s
        // because we use constructors
        // which are only called
        // when the string is declared.
      
        // Remove commented portion
        // to see for yourself
      
        /*
        char demo[] = "gfg";
        s(demo); // compilation error 
        */
      
        return s;
    }
      
    // Driver code
    int main()
    {
        char a[] = { 'C', 'O', 'D', 'E' };
        char b[] = "geeksforgeeks";
      
        int a_size = sizeof(a) / sizeof(char);
        int b_size = sizeof(b) / sizeof(char);
      
        string s_a = convertToString(a, a_size);
        string s_b = convertToString(b, b_size);
      
        cout << s_a << endl;
        cout << s_b << endl;
      
        return 0;
    }
    
    输出:
    CODE
    geeksforgeeks
    
  • 方法3:
    这样做的另一种方法是使用重载的’=’运算符,该运算符在C++ std :: 字符串也可用。

    方法:

    1. 获取字符数组及其大小。
    2. 声明一个字符串。
    3. 使用重载“=”运算符的字符阵列,以在字符串中指定的字符。
    4. 返回字符串。

    下面是上述方法的实现。

    // Demonstrates conversion
    // from character array to string
      
    #include 
    using namespace std;
      
    // uses overloaded '=' operator from string class
    // to convert character array to string
    string convertToString(char* a, int size)
    {
        string s = a;
        return s;
    }
      
    // Driver code
    int main()
    {
        char a[] = { 'C', 'O', 'D', 'E' };
        char b[] = "geeksforgeeks";
      
        int a_size = sizeof(a) / sizeof(char);
        int b_size = sizeof(b) / sizeof(char);
      
        string s_a = convertToString(a, a_size);
        string s_b = convertToString(b, b_size);
      
        cout << s_a << endl;
        cout << s_b << endl;
      
        return 0;
    }
    
    输出:
    CODE
    geeksforgeeks
    
    要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”