2015-06-03 4 views
1

Мне нужно преобразовать char массив C в строку C++, но массив char является элементом struct.Преобразование массива символов C в строку C++

Код:

Это моя структура в C

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

, и я хочу, чтобы получить доступ к name[50] в C++, но для этого я должен преобразовать его в строку. Я пробовал strcpy и memcpy. Я использую ESL_BOOL status;, и он работает, но смущен с name[50].

ответ

4

Первое, что вы должны изменить в имени class в своей структуре, потому что это может вызвать проблемы, поскольку это ключевое слово в C++.

Затем, чтобы преобразовать строку C в C++, вы можете просто использовать конструктор std::string, который принимает строки C-стиля.

std::string myCppString(MyStruct.name); 
+0

ThanksSir Мне нужно присвоить этот массив символов строковому элементу –

+0

Я не понимаю, что вы хотите сделать точно. Вы имеете в виду, что вы хотите скопировать символ 'char [50]' в другой? – meneldal

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

class является зарезервированным ключевым словом языка C++. Если вы попытаетесь использовать его, токенизатор примет его как ключевое слово и вызовет проблемы позже на этапе синтаксического анализа, так как ожидается идентификатор.

Когда-то считалось хорошей практикой предшествовать всем членам structm или m_, чтобы избежать таких столкновений.

К вашей проблеме: достаточно по умолчанию «из строки C»string (const char* s) должно быть достаточно.

MyStruct obj; 
std::string objsName(obj.name); 
std::string objsClass(obj.mclass); 
Смежные вопросы