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