string.h
和 cstring
有什么区别?
哪个应该用于 C,哪个用于 C++(如果有的话)?
原文由 Roman Byshko 发布,翻译遵循 CC BY-SA 4.0 许可协议
string.h
和 cstring
有什么区别?
哪个应该用于 C,哪个用于 C++(如果有的话)?
原文由 Roman Byshko 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
在 C++ 中,您应该包括
cstring
作为标头,而在 c 中,您应该包括string.h
作为标头。在 C++ 中
在 C 中
C 标准库的功能也在 C++ 标准库中提供,并且作为一般命名约定,它们在 C 标准库中的相应名称前
c
。例如:
string.h
变成cstring
stdio.h
变成cstdio
等等…由于其他答案为这个讨论增加了不同的维度,我觉得有必要参考神圣的标准来清除这一点。
根据 C++11 20.9.14.6 & 7 :
虽然 21.7 空终止序列实用程序 指出:
附件 D(规范性)兼容性特性 [depr] 规定:
D.6 C 标准库头文件
其中包括:
进一步,
结论:
从以上参考资料:
我对我之前的建议进行了纠正,似乎使用
cstring
--- 而不是string.h
似乎没有明显的优势,而正如@Alf 建议的那样,由于使用不合格的函数名称可能会出现一些编译问题使用cstring
作为标题时。因此,鉴于使用string.h
或使用 --- 没有明显的cstring
,我认为如果以适当的方式使用,两者都可以在 C++ 中使用。