我需要将char
C数组转换为字符串c ++,但char
数组是struct
的元素。
代码:
这是我在C中的结构
typedef struct myStruct
{
char name[50];
char abc[50];
ESL_BOOL status;
}MyStruct;
我希望在c ++中访问name[50]
,但为此我必须将其转换为字符串。
我尝试过strcpy
和memcpy
。
我正在使用ESL_BOOL status;
,但它正在使用但与name[50]
混淆。
答案 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
成员之前使用m
或m_
来避免此类冲突是个不错的做法。
解决您的问题:只需要来自C字符串“ string (const char* s)
构造函数的默认”即可。
MyStruct obj;
std::string objsName(obj.name);
std::string objsClass(obj.mclass);