C ++:用字符串初始化char数组?

时间:2012-12-04 01:09:40

标签: c++ arrays string

假设我有一个叫做垃圾的字符串。

无论垃圾是什么,我想制作一个char数组。每个元素都是字符串的一个字符。

因此,代码类似于:

const int arrSize = sizeof(garbage); //garbage is a string
char arr[arrSize] = {garbage};

但是,这会产生错误“无法在初始化时将字符串转换为char”。

这样做的正确方法是什么?我只是想把一个字符串给它做一个字符串并用它来制作一个数组。

4 个答案:

答案 0 :(得分:11)

C ++ std::string维护一个内部char数组。您可以使用c_str()成员函数访问它。

#include <string>
std::string myStr = "Strings! Strings everywhere!";
const char* myCharArr = myStr.c_str();

请记住,您无法修改内部阵列。如果要这样做,请复制该数组并修改副本。

答案 1 :(得分:0)

您可以使用garbage.data(),它已经是指向包含字符串数据的字符数组的第一个元素的指针。

答案 2 :(得分:0)

或者这是一个很重要的方法。

#include <string>
std::string temp = "something";
char* myChar = new char(temp.length());
for(int i = 0; i < temp.length(); ++i){
    a[i] = temp[i];
}

答案 3 :(得分:0)

我认为您所追求的要简单得多:

char arr[] = "some interesting data (garbage)";