2013-07-28 77 views
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’ 
+0

如果你要使用char数组,你为什么不说'char string1 [] = “你好世界”;'? – jrok

+1

参考这个。 http://stackoverflow.com/questions/347949/convert-stdstring-to-const-char-or-char – RadhaKrishna

回答

1

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

0

由于数据的大小可能是可变的,因此无法通过静态数组的初始化进行复制。你可以做到这一点

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

char *string1 = strdup(data.c_str()); 
// do stuff with string1 
free(string1); 
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; 
0

如果您熟悉循环,那么最简单的方法是将字符串的内容逐一复制到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; 
} 
相关问题