21xrx.com
2024-12-22 21:09:20 Sunday
登录
文章检索 我的文章 写文章
C++字符串转换为字符数组
2023-07-04 06:38:38 深夜i     --     --
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` 函数更为简便和高效,而手动转换却更具有可读性。在不同的应用场景中,可以根据实际需求而选择不同的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复