将C的char数组转换为C++的字符串
Posted
技术标签:
【中文标题】将C的char数组转换为C++的字符串【英文标题】:Convert char array of C into string of C++ 【发布时间】:2015-06-03 04:29:29 【问题描述】:我需要将 C 的 char
数组转换为字符串 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]
混淆。
【问题讨论】:
【参考方案1】:首先应该更改结构中的 class
名称,因为这可能会导致问题,因为它是 C++ 中的关键字。
然后要将 C 字符串转换为 C++ 字符串,您可以简单地使用接受 C 样式字符串的 std::string
构造函数。
std::string myCppString(MyStruct.name);
【讨论】:
ThanksSir 我需要将此字符数组分配给字符串元素 我不明白你到底想做什么。您的意思是要将char[50]
复制到另一个?【参考方案2】:
typedef struct myStruct
char name[50];
char mclass[50];
ESL_BOOL status;
MyStruct;
class
是 C++ 语言的保留关键字。如果您尝试使用它,tokenizer 会将其作为关键字,并在解析阶段后期导致问题,因为需要标识符。
曾经认为在所有struct
的成员前面加上m
或m_
以避免此类冲突是一种很好的做法。
你的问题:只需要默认的 "from C string" string (const char* s)
构造函数就足够了。
MyStruct obj;
std::string objsName(obj.name);
std::string objsClass(obj.mclass);
【讨论】:
以上是关于将C的char数组转换为C++的字符串的主要内容,如果未能解决你的问题,请参考以下文章