c++ - 如何将 const char* 转换为 char[256]
问题描述
我如何转换const char*
为char[256]
?
const char *s = std::string("x").c_str();
char c[256] = /* ??? */
解决方案
您不能使用字符指针初始化数组。但是你可以复制字符串。例如:
const char *s = get_the_string();
char c[256]{};
auto n = std::strlen(s);
if (std::size(c) <= n)
throw std::runtime_error(
"The buffer is too small. Contact your local C++ maintainer");
std::memcpy(c, s, n);
使用恒定大小数组的明显问题是您需要考虑如何处理输入字符串不适合的情况。在这里,我使用了一个异常,但如果这不适合您,您可以使用您选择的错误处理。
您不能从中复制const char *s = std::string("x").c_str();
,因为指针悬空,并且尝试访问指向的数据将具有未定义的行为。
推荐阅读
- kubernetes - 如何列出种类部署?
- html - CSS中的复杂边界半径问题(边缘曲线与角曲线不同)
- arrays - 为什么我不能访问这个数组 ForEach 循环中的数据?SwiftUI
- r - 哪种提取方法最快?
- javascript - 如何使用 JavaScript 解码阿拉伯字符(仅限客户端解决方案)
- python - for x,y in function(): - 解释 python for 循环结构
- javascript - ESLint 关闭分号规则
- python - 'float' 对象没有属性 'strip'?
- ruby-on-rails - I18n.locale 的不可理解的行为
- python - 我在终端上运行时得到 404,在空闲时得到 200