C ++:将char数组转换为打印的字符串

时间:2014-07-30 16:39:29

标签: c++ arrays string char

只是初学者学习基本的C ++。我试图找出最好的方法:

  1. 将char数组名称20转换为可打印的字符串。 我发现在其他Stack Overflow主题中使用" str()"例如" str(Name)",但总是出现'标识符未找到'。

    cout << "Name:" << str(Name) << endl;
    
  2. 设置一个20个字符的char数组。出于某种原因,以下内容在声明时给出了错误。我已多次调整它,但我无法理解为什么它不会给予。

    TESCStudent.Name[20] = {'S','u','p','e','r','P','r','o','g','r','a','m','m','e','r','\0'};
    
  3. 我到目前为止的完整代码:

    #include <iostream>
    #include <conio.h>
    #include <string>
    using namespace std;
    
    //Step 1
    struct StudentRecord
    {
    char Name[20];
    //Accessor
    void printInfo() const;
    };
    
    void StudentRecord::printInfo() const
    {
    cout << "Name:" << str(Name) << endl;
    }
    
    int main()
    {
    //Step 2
    StudentRecord TESCStudent;
    TESCStudent.Name[20] = {'S','u','p','e','r','P','r','o','g','r','a','m','m','e','r','\0'};
    
    //Step 3
    TESCStudent.printInfo();
    
    _getch();
    return 0;
    }
    

2 个答案:

答案 0 :(得分:1)

鉴于您处于初级水平,只需使用std::string

#include <iostream>
#include <conio.h>
#include <string>

struct StudentRecord {
    std::string Name;
    void printInfo() const {
        std::cout << "Name:" << Name << '\n';
    }
};

int main() {
    StudentRecord TESCStudent;
    TESCStudent.Name = "SuperProgrammer";
    TESCStudent.printInfo();

    _getch();
}

Live demo

答案 1 :(得分:0)

语法如下:

char Name[20] = {'S','u','p','e','r','\0'}; 

用于在定义变量时初始化变量。但是,在您的情况下,

StudentRecord TESCStudent;
TESCStudent.Name[20] = ...;

您之前已经在线上定义了它,因此您无法初始化&#34;,您必须&#34;分配&#34;它

这就是您使用std:string代替char[]的原因。