2015-05-12 2 views
0

Для моей программы у меня есть рекордер. Я получаю ввод со строкой, но как теперь я могу сделать строку равной массиву char? FYI: строка playersName уже будет заполнена именем. Вот мой код:C++ Создание Char Array имеет значение строки

class Highscore 
{ 
    public: 
     char name[10]; 
     ...[Code]... 
} 

...[Code]... 
// Declare variables *The playersName will be filled out already* 
string playersName = ""; 
...[Code]... 

// How can I get the data[playerScore].name equal my playersName string? 
cin.get (data[playerScore].name, 9); 
// I know cin.get will be not in the code since I already get the players name with the string 

ответ

2

Вы можете использовать std::string::copy функцию-член, как

// length of the destination buffer so we won't overflow 
size_t length = sizeof data[playerScore].name; 

// copy the string content to the char buffer 
playersName.copy(data[playerScore].name, length); 

// add the `'\0'` at the end 
data[playerScore].name[length] = '\0'; 
+0

'name' - массив символов, поэтому он не имеет метода' size' :) – thelink2012

+0

@vsoftco, у меня уже проблема решена. :) – ThatCoderBryan

+0

В чем разница между вашим ответом и одним ниже? Их есть? – ThatCoderBryan

1

Вам нужно

strcpy(data[playerScore].name, playersName.c_str()); 
+0

@vsoftco Я не сказал бы так, 'strcpy' могут быть подвержены для переполнения буфера, в основном, если неправильно использовать начальники. Я бы окончательно сказал, что ваш ответ - путь. – thelink2012

+0

@ thelink2012 Я понял, что теперь, спасибо, что указал на это, я не думал о проблеме переполнения. Тем не менее сохраняйте мой upvote, хотя :) – vsoftco