#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’
答案 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;
}