c++ - 如何将字符串的内容复制到 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_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);
此外,我确信还有更多方法可以做到这一点,但这些是我会使用的方法。
推荐阅读
- amazon-web-services - Terraform - 数据库和安全组位于不同的 VPC 中
- mysql - 我无法正确编写正确的 SQL 查询
- c - 如何在 Visual Studio 2019 中创建 C 项目?
- quarkus - 如何以编程方式确定 Quarkus 中的当前活动配置文件
- javascript - 我怎样才能返回 {vW,vH},它实际上返回未定义?
- html - 如何连续移动两个输入框
- ios - iOS 通知开发环境:如何正确设置 APNS?
- python - 使用 NaN 的 Tensorflow / Keras 批量标准化
- swift - 删除用户帐户时的firebase错误“此操作很敏感,需要最近的身份验证。在重试此请求之前再次登录。”
- python - 类名“I”的“模糊类定义”(Python 中的 Pep8)