c ++中char *类型的变量

时间:2014-03-18 23:46:31

标签: c++ string char

在C ++代码中,我需要从用户处获取一个字符串并将其转换为char *类型的变量,如下所示:

string word1;
char * word2;
int something;

cin>>word1;

for (int i=0;i<something; i++)
word2[i]=word1[i];

但我似乎无法正确,任何帮助?

2 个答案:

答案 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:通过将用户输入读入字符串来更新代码。