0
#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

4 回答 4

1

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

于 2013-07-28T17:35:04.997 回答
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;
于 2013-07-28T17:44:43.720 回答
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;
}
于 2013-07-28T17:45:03.953 回答
0

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

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

char *string1 = strdup(data.c_str());
// do stuff with string1
free(string1);
于 2013-07-28T17:35:15.793 回答