将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],但为此我必须将其转换为字符串。 我试过strcpymemcpy。 我正在使用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 的成员前面加上mm_ 以避免此类冲突是一种很好的做法。

你的问题:只需要默认的 "from C string" string (const char* s) 构造函数就足够了。

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

【讨论】:

以上是关于将C的char数组转换为C++的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串数组转换为 Char * 数组 c++

c++ - 将 8 个位置的 int 数组转换为 char

如何在 C++ 中将字符串转换为 char 数组?

如何把c++的char字符型转换为string

C++ 字符串和 char * c stype 字符串

c++ 不使用 C 标准库将字符串和 int 转换为 char*