将string 赋值给char
时间: 2023-11-13 20:05:56 浏览: 35
要将一个字符串(string)赋值给一个字符数组(char),可以使用strcpy函数。例如:
```
string str = "Hello";
char ch[6];
strcpy(ch, str.c_str());
```
这里,先定义了一个string类型的变量str并初始化为"Hello"。然后定义了一个长度为6的字符数组ch,使用strcpy函数将str的内容复制到ch中。需要注意的是,需要使用str.c_str()将string类型的变量转换为const char*类型的指针才能使用strcpy函数。
相关问题
将char赋值给string
可以使用string的构造函数或者赋值运算符来将char赋值给string。
方法一:使用构造函数
```cpp
char ch = 'a';
string str(ch, 1); //使用char和字符串长度作为参数创建字符串
```
方法二:使用赋值运算符
```cpp
char ch = 'a';
string str;
str = ch; //将char赋值给字符串
```
注意:如果想将一个char数组或者指针赋值给string,可以使用string的构造函数或者赋值运算符。
```cpp
char arr[] = "hello";
string str(arr); //使用char数组创建字符串
```
```cpp
char* ptr = "world";
string str;
str = ptr; //将char指针赋值给字符串
```
怎么把string 赋值给unsigned char*
将一个 `std::string` 赋值给 `unsigned char*` 可以通过以下两种方法实现:
方法一:使用 `strcpy` 函数
```c++
#include <iostream>
#include <cstring>
int main() {
std::string str = "Hello, world!";
const char* cstr = str.c_str(); // 获取 std::string 对应的 const char* 指针
unsigned char* data = new unsigned char[str.size() + 1]; // 动态分配内存,注意要加一位存储字符串结束符 '\0'
strcpy((char*)data, cstr); // 将 const char* 拷贝到 unsigned char* 中
// 其它操作
delete[] data; // 释放内存
return 0;
}
```
在这个例子中,我们首先定义了一个 `std::string` 对象 `str`,然后通过 `c_str()` 函数获取其对应的 `const char*` 指针 `cstr`。接着,我们动态分配了一个 `unsigned char*` 数组 `data`,并使用 `strcpy` 函数将 `cstr` 拷贝到 `data` 中。最后,我们进行了一些其它的操作,并在最后释放了内存。
方法二:使用 `std::copy` 算法
```c++
#include <iostream>
#include <cstring>
#include <algorithm>
int main() {
std::string str = "Hello, world!";
const char* cstr = str.c_str(); // 获取 std::string 对应的 const char* 指针
unsigned char* data = new unsigned char[str.size() + 1]; // 动态分配内存,注意要加一位存储字符串结束符 '\0'
std::copy(cstr, cstr + str.size() + 1, data); // 使用 std::copy 算法将 const char* 拷贝到 unsigned char* 中
// 其它操作
delete[] data; // 释放内存
return 0;
}
```
在这个例子中,我们使用了 `std::copy` 算法将 `const char*` 指针 `cstr` 中的字符拷贝到了 `unsigned char*` 数组 `data` 中。注意,这里需要将 `cstr` 的结束符也一并拷贝到 `data` 中,因此在 `std::copy` 函数的第三个参数中需要加一。然后,我们进行了一些其它的操作,并在最后释放了内存。