【发布时间】:2012-10-02 20:29:55
【问题描述】:
我使用 strncpy(dest, src_string, 32) 将 std::string 转换为 char[32] 以使我的 C++ 类可以与旧版 C 代码一起使用。但是std::string的c_str()方法总是返回一个以null结尾的字符串吗?
【问题讨论】:
-
是的,但如果您的
strncpy太小,您可能不会复制它。假设您的空终止符位于索引 40 处,而您只复制 32 。不再为 null 终止。 -
c_str()返回 C 字符串,由 C 标准定义为空终止。我称这不是一个真正的问题,因为我们在这里要做的就是解释“C 字符串”是什么意思,这并不适合这个网站。 -
@Griwes 我认为这不应该作为 NARQ 关闭,RTFM 将是关闭的更合适的理由:)