21xrx.com
2025-03-22 20:17:24 Saturday
文章检索 我的文章 写文章
C++字符串转换为字符数组
2023-07-04 06:38:38 深夜i     17     0
C++ 字符串 字符数组 转换 函数

C++中的字符串类型是一种动态数组,其中每个元素都是一个字符。而字符数组则是静态数组,可以用来存储字符串。有时候我们需要将一个字符串转换为一个字符数组,这时可以使用C++中的标准库函数或者手动进行转换。

方法1:使用strcpy函数

strcpy函数可以复制字符串到一个字符数组中。用法如下:

#include <iostream>
#include <cstring>
int main() {
  std::string str = "Hello!";
  char char_arr[str.size()+1];
  strcpy(char_arr, str.c_str());
  std::cout << char_arr << std::endl;
  return 0;
}

首先定义一个字符串 `str`,然后使用 `str.size()+1` 分配足够大小的字符数组,最后利用 `strcpy` 函数进行复制。这里的 `c_str()` 函数返回一个指向字符数组的指针,这也是为什么我们需要给字符数组分配足够的空间的原因。这样就可以将字符串转换为字符数组了。

方法2:手动进行转换

手动转换是通过遍历字符串元素并复制到字符数组中实现的。虽然比使用 `strcpy` 函数更繁琐一些,但是它可以更好地理解字符串和字符数组之间的转换。

#include <iostream>
#include <cstring>
int main() {
  std::string str = "Hello!";
  char char_arr[str.size()+1];
  for(int i=0; i<str.size(); i++) {
    char_arr[i] = str[i];
  }
  char_arr[str.size()] = '\0'; // 为字符数组末尾添加结束符
  std::cout << char_arr << std::endl;
  return 0;
}

首先和方法1一样定义字符串 `str` 和字符数组空间的分配。然后可以遍历字符串,将每个字符复制到字符数组中,最后记得为字符数组末尾添加一个结束符 `\0`。最后再输出字符数组即可。

总的来说,以上两种方法都可以用来将字符串转换为字符数组,但是 `strcpy` 函数更为简便和高效,而手动转换却更具有可读性。在不同的应用场景中,可以根据实际需求而选择不同的方法。

  
  

评论区