在C ++代码中,我需要从用户处获取一个字符串并将其转换为char *类型的变量,如下所示:
string word1;
char * word2;
int something;
cin>>word1;
for (int i=0;i<something; i++)
word2[i]=word1[i];
但我似乎无法正确,任何帮助?
答案 0 :(得分:3)
原因是您在尝试时尚未为word2
分配任何内存:
word2[i] = word1[i];
在循环中。
目前尚不清楚你要做什么。但是,给定word1
,您可以使用const char *
库中的c_str()
成员函数将其转换为std::string
。
答案 1 :(得分:3)
以下是适合您案例的代码:
// 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());
来源:How do i convert string to char array? - C++ Forum
或者,如果你更愿意以逐个字符的方式做到这一点:
// 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()
,{{1}}用于保存原始字符串不受更改。
UPD:通过将用户输入读入字符串来更新代码。