В коде C ++ мне нужно получить строку от пользователя и передать ее в переменную типа char *, что-то вроде этого:
string word1;
char * word2;
int something;
cin>>word1;
for (int i=0;i<something; i++)
word2[i]=word1[i];
но я не могу понять это правильно, любая помощь?
Причина в том, что вы не выделили никакой памяти для word2
но когда вы пытались сделать:
word2[i] = word1[i];
в петле.
Не понятно, что вы пытаетесь сделать. Однако, учитывая word1
, вы можете преобразовать его в const char *
с c_str()
функция-член от std::string
библиотека.
Вот код, который будет работать в вашем случае:
// Define the string
string word1;
// Read a line until '\n' to the word1
std::getline(cin, word1);
// Define a char array and allocate memory it
char * word2 = new char[word1.size() + 1];
// Null-terminate the array (in case if you need to print it)
word2[word1.size()] = 0;
// Place the letters to the new array
memcpy(word2, word1.c_str(), word1.size());
Источник: Как мне преобразовать строку в массив символов? — Форум C ++
Или, если вы предпочитаете делать это по-своему:
// Define the string
string word1;
// Read a line until '\n' to the word1
std::getline(cin, word1);
// Define a char array and allocate memory it
char * word2 = new char[word1.size() + 1];
// Get the word word1 length
int wordLength = word1.size();
// Convert one string to another symbol-by-symbol
for (int i = 0; i < wordLength; i ++)
word2[i] = word1.c_str()[i];
// Null-terminate the array (in case if you need to print it)
word2[wordLength] = 0;
Примечание: не забудьте #include <string.h>
для memcpy()
, который используется для сохранения исходной строки от изменений.
UPD: код обновляется чтением пользовательского ввода в строку.