在C ++中将字符串指针传递给结构

时间:2014-02-11 05:11:06

标签: c++ string pointers struct

我正试图通过string将各种Struct传递给pointer的成员,但我做的事情从根本上是错误的。我认为它不需要被解除引用。以下流程适用于其他类型的数据,例如intchar。例如:

typedef struct Course {
    string location[15];
    string course[20];
    string title[40];
    string prof[40];
    string focus[10];
    int credit;
    int CRN;
    int section;
} Course;


void c_SetLocation(Course *d, string location){
    d->location = location;
    . . .
}

当我尝试编译以下算法来初始化Course

时出错
    void c_Init(Course *d, string &location, ... ){
        c_SetLocation(d, location[]);
        . . .

    }

错误:

error: cannot convert ‘const char*’ to ‘std::string* {aka std::basic_string<char>*}’ for argument ‘2’ to ‘void c_Init(Course*, std::string*, ..

3 个答案:

答案 0 :(得分:1)

例如,您实际上在location字段中定义了一个包含15个字符串的数组。要么使用常规字符串;即G:

typedef struct Course {
    string location;
    string course;
    string title;
    string prof;
    string focus;
    int credit;
    int CRN;
    int section;
} Course;

或使用char数组:

typedef struct Course {
    char location[15];
    char course[20];
    char title[40];
    char prof[40];
    char focus[10];
    int credit;
    int CRN;
    int section;
} Course;

答案 1 :(得分:0)

当您声明char a[10]时,您正在创建一个包含10个字符的数组。当您声明std::string时,您正在创建一个可以增长到任意大小的字符串。当您声明std::string[15]时,您将创建一个包含15个字符串的数组,这些字符串可以增长到任意大小。

这是你的结构应该是什么样子:

typedef struct Course {
    std::string location;
    std::string course;
    std::string title;
    std::string prof;
    std::string focus;
    int credit;
    int CRN;
    int section;
} Course;

答案 2 :(得分:0)

string location[15]表示您要创建15个string个实例,并且每个单个实例都可以包含任意长度的文本。

而不是d->location,您需要指定其中一个字符串:d->location[0] = locationd->location[1] = location等。