2014-01-23 5 views
-3

Я получаю эту ошибкуПреобразование строки в массив символов

устаревшее преобразование из строки постоянной в char*

Как бы я поставил строку в массив символов. Вот то, что я пробовал:

char result[]; 
result = "invalid"; 

EDIT:

Это то, что я пытаюсь сделать

bool intToRoman (int val, char result[]) 
{ 
    MAIN BODY 
    result = "MMM"; 
} 

в этой функции я пытаюсь изменить целое число в романо цифра. Я хочу сохранить мою строку (например, «MMM») в мой массив символов.

+5

Поскольку это C++: 'результат станд :: строка («недействительна»);' – Borgleader

+0

Назначение ?? Нельзя использовать 'std :: string'? –

+0

'strncpy()' для вашего случая, может быть? Снова: используйте 'std :: string', чтобы облегчить жизнь с помощью [tag: C++]! –

ответ

1

Если вы планируете изменить его во время выполнения, то вы можете использовать любой из следующих вариантов:

 char result[] = "invalid"; // 8 bytes in the stack 
static char result[] = "invalid"; // 8 bytes in the data-section 

Если вы не планируете менять его во время работы, тогда вы можете использовать любую из следующих функций:

 const char result[] = "invalid"; // 8 bytes in the stack 
static const char result[] = "invalid"; // 8 bytes in the data-section 
     const char* result = "invalid"; // 8 bytes in the code-section, and a pointer (4 or 8 bytes) in the stack 
static const char* result = "invalid"; // 8 bytes in the code-section, and a pointer (4 or 8 bytes) in the data-section 

Если вы хотите инициализировать его только на более позднем этапе во время выполнения:

 char result[] = "invalid"; // 8 bytes in the stack 
static char result[] = "invalid"; // 8 bytes in the data-section 
... 
strcpy(result,"MMM"); 
// But make sure that the second argument is not larger than the first argument: 
// In the case above, the size of "MMM" is 4 bytes and the size of 'result' is 8 bytes 
+0

Я отредактировал мое сообщение. – user3229707

+0

И я отредактировал свой ответ ... –

+0

k спасибо, может также задать вам еще один вопрос здесь. Если у меня есть строка roman = "MMM". Как положить все, что находится в романе, в результат – user3229707

8

Вам необходимо инициализировать массив:

char result[] = "invalid"; 

Это создает массив char размер 8.

Но вы можете быть лучше используя std::string:

std::string result("invalid"); 
+0

* ahem * s/of/off /? – Borgleader

+1

@Borgleader Спасибо. Я действительно должен научиться вводить одно из этих дней. – juanchopanza

+0

Это не то, что я должен был сделать. Я пытался объявить массив, а потом кто-то из тела кода положил слово в мой массив. – user3229707

Смежные вопросы