c++ 将string 拷贝到字符串数组
时间: 2023-12-07 21:36:35 浏览: 231
可以通过以下两种方法将string拷贝到字符串数组中:
1. 直接使用string的成员函数c_str()将string转换为C风格的字符串,然后使用strcpy()函数将其拷贝到字符数组中。
2. 定义一个新的与string长度相等的字符数组,然后使用strcpy()函数将string拷贝到字符数组中。
下面是两种方法的示例代码:
```c++
// 方法一:使用c_str()函数和strcpy()函数
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "hello world";
char arr[20];
strcpy(arr, str.c_str());
cout << arr << endl;
return 0;
}
// 方法二:定义新的字符数组并使用strcpy()函数
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "hello world";
char arr[str.length() + 1];
strcpy(arr, str.c_str());
cout << arr << endl;
return 0;
}
```
相关问题
C++字符串转化成字符数组
在C++中,将字符串转化为字符数组通常通过`std::string`类型的`c_str()`函数或者`data()`成员函数来完成,这两个方法都会返回指向常量字符序列的指针。这里是一个简单的示例:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
char array[str.size() + 1]; // 为了容纳结束符'\0'
// 使用c_str()函数
strcpy(array, str.c_str());
// 或者使用data()成员
// strcpy(array, str.data()); 这里需要注意的是data()返回的不是null终止的,需要手动添加'\0'
// 更安全的方式是先计算长度然后拷贝,例如:
// size_t len = str.length();
// strncpy(array, str.data(), len);
// array[len] = '\0';
std::cout << "Character array: " << array << std::endl;
return 0;
}
```
在这个例子中,我们首先创建了一个`std::string`类型的变量`str`,然后声明一个字符数组`array`,大小等于字符串的长度加一(用于存储结束符`\0`)。接着使用`strcpy`复制字符串到字符数组。
用C++ 定义一个字符数组s1,并输入一个字符串1,写一段代码,要求把字符串1中的字母拷贝到字符数组s2中并输出。然后再优化代码
可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char s1[MAX_LEN];
char s2[MAX_LEN];
printf("请输入字符串1:\n");
scanf("%s", s1);
// 复制字符串1到字符串2
strcpy(s2, s1);
printf("拷贝后的字符串2为:%s\n", s2);
return 0;
}
```
优化代码可以使用 strncpy() 函数,该函数可以指定拷贝的长度,防止越界访问。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char s1[MAX_LEN];
char s2[MAX_LEN];
printf("请输入字符串1:\n");
scanf("%s", s1);
// 复制字符串1到字符串2
strncpy(s2, s1, MAX_LEN - 1);
s2[MAX_LEN - 1] = '\0';
printf("拷贝后的字符串2为:%s\n", s2);
return 0;
}
```
阅读全文