将字符串的内容转换为字符数组

时间:2013-07-28 17:32:52

标签: c++

#include <stdio.h>
#include <string.h>

int main()
{

    std::string data;
    data = "hello world";
    char string1[] = data;

}

如果我必须使用char string1[]而不是char *string1,我是否可以将字符串数据的内容复制到此char string1[]

file.cpp: In function ‘int main()’:
file.cpp:13:22: error: initializer fails to determine size of ‘string1’

4 个答案:

答案 0 :(得分:1)

您可以在std :: string对象上调用方法c_str并将结果复制到您的数组。

答案 1 :(得分:0)

由于数据大小可能是变量,因此无法通过静态数组的初始化来复制。

你能做到的一种方法是使用动态分配(C ++字符串自动处理):

char *string1 = strdup(data.c_str());
// do stuff with string1
free(string1);

答案 2 :(得分:0)

使用堆栈内存(仅当您确定data.size()小于1000时)。

char result[1000];
strcpy(result, data.c_str());

或使用堆内存:

char* result = new char[data.size() + 1];
strcpy(result, data.c_str());
// ...
delete[] result;

答案 3 :(得分:0)

如果您熟悉循环,那么最简单的方法是将字符串的内容逐个复制到char数组。因为你不打算使用char指针所以你必须修复char数组的大小,比如20。

int main()
{
    string data;
    data = "hello world";
    int size = data.size(); // size of data
    char string1[20]; //you can change the size of char array but it must be greater than size of data string
    for (int i = 0; i < size; i++) {
        string1[i] = data[i];
    }
    return 0;
}