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

时间:2015-06-03 04:29:29

标签: c++ c arrays linux string

我需要将char C数组转换为字符串c ++,但char数组是struct的元素。

代码:

这是我在C中的结构

typedef struct myStruct
{
    char name[50];
    char abc[50];
    ESL_BOOL status;
}MyStruct;

我希望在c ++中访问name[50],但为此我必须将其转换为字符串。 我尝试过strcpymemcpy。 我正在使用ESL_BOOL status;,但它正在使用但与name[50]混淆。

2 个答案:

答案 0 :(得分:4)

您应该在结构中的class名称中更改第一件事,因为这可能会导致问题,因为它是C ++中的关键字。

然后,为了将C字符串转换为C ++字符串,您只需使用接受C风格字符串的std::string构造函数。

std::string myCppString(MyStruct.name);

答案 1 :(得分:0)

typedef struct myStruct {
    char name[50];
    char mclass[50];
    ESL_BOOL status;
} MyStruct;

class是C ++语言的保留关键字。如果您尝试使用它,则tokenizer会将其作为关键字并在解析阶段稍后导致问题,因为将需要标识符。

曾经认为在所有struct成员之前使用mm_来避免此类冲突是个不错的做法。

解决您的问题:只需要来自C字符串“ string (const char* s)构造函数的默认”即可。

MyStruct obj;
std::string objsName(obj.name);
std::string objsClass(obj.mclass);