首页 > 解决方案 > 如何将字符串的内容复制到 char c++ 数组?

问题描述

所以我有这个问题

//This holds 5 messages submitted prev by the user, temporarily stored
string arrayOfMessages[5];

让我们说

arrayOfMessages[0]="This is my message"//The message in the first position.

我需要复制arrayOfMessages[0]到这样的数组char

char message [20];

我尝试使用strcpy(message,arrayOfMessages[0]),但出现此错误:

error: cannot convert 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'const char*'|

任何人都知道我怎么能做到这一点,或者如果我做错了什么,我不能将字符串设置为 const char bc 消息是由用户估算的 prev 所以每次运行程序时它都会改变,因此不能是常量变量.

标签: c++

解决方案


有很多方法可以做到

通过使用字符串类的 c_str() 函数

string message = "This is my message";
const char *arr;
arr = message.c_str();

通过将字符串中的所有字符复制到 char 数组

string message = "This is my message";
char arr[200];
for(int i = 0; i < 200 && message[i] != '\0'; i++){
    arr[i] = message[i];
}

如果您使用第二种方法,请注意数组大小。您还可以将其设为函数以使其更易于使用

 void copyFromStringToArr(char* arr, string str, int arrSize){
     for(int i = 0; i<arrSize && str[i] != '\0'; i++){
         arr[i] = str[i];
     }
 }

因此,在您的情况下,您可以像这样调用函数:

copyFromStringToArr(message,arrayOfMessages[0],20);

此外,我确信还有更多方法可以做到这一点,但这些是我会使用的方法。


推荐阅读