【问题标题】:Proper way to convert string to array of char C++将字符串转换为char C++数组的正确方法
【发布时间】:2022-01-02 17:38:08
【问题描述】:

我一直在尝试使用 C++ 将字符串转换为 char 数组,但我很难使用 c_str() 函数并正确存储 char。

string a = "A20UG008";
string b = "A20UG009";
string c = "A20UG010";
char hi[3][8];
strcpy(hi[0],a.c_str());
strcpy(hi[1],a.c_str());
strcpy(hi[2],a.c_str());

输出:

A20UG008A20UG008A20UG008

如果我调用hi[0],我希望显示的只是“A20UG008”。

是否有任何错误的逻辑表达式或我使用了错误的函数?

【问题讨论】:

  • 你需要为终止的 0 留出空间,所以你需要 9 个字符的空间来容纳 8 个字符的字符串。
  • 如果您打开您的 C++ 教科书并阅读所有关于文字字符串及其工作原理的内容,您会发现 "A20UG008" 是 9 chars,而不是 8。您需要修复您的相应的代码,请参阅您的 C++ 教科书以获取更多信息。
  • 如果我打电话给 hi[0],我希望显示什么 -- 你没有显示你是如何显示这个字符串的。即使您没有按照指出的那样纠正问题,您仍然可以通过相应地调整输出函数来仅显示 8 个字符。 在目标数组中存储空字节有一些正当理由,所以现在,您的问题需要更多细节。
  • 您不需要使用 std::string (C++) 和 strcpy(剩余的不安全“C”)来用文本初始化固定大小的数组。你应该这样,生活例子在这里:onlinegdb.com/h3mN28uop
  • 你的 C 数组是一对一的。 C 字符串需要一个额外的字符作为 \0

标签: c++ string char type-conversion


【解决方案1】:

将字符串转换为char C++数组的正确方法

一个字符串已经是一个字符数组。无需转换。

输出:

A20UG008A20UG008A20UG008

这是不可能的,因为复制数组不会产生输出。

【讨论】:

  • 从技术上讲,C 字符串末尾需要一个 \0,而 C++ 字符串不需要。 C++ String 将确保在调用 .c_str() 时添加 \0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多