<string.h> or <string>?
<string.h> or <string>?
在c++项目中包含标准头文件string.h的最佳方法是什么?在结尾使用[点]h,像这样:
#include <string.h>
或者直接写
#include <string>
或者,用另一种我不知道的方式?
谢谢!
这是两个不同的头。
-
<string>
用于c++std::string
类 -
<string.h>
用于c字符串函数(如strlen()
等),应该是<cstring>
用于c++项目(这是第三个,您不知道)。
完全不同!
<string.h>
此库用于c风格字符串
<string>
for c++ string
按照c++的标准,你应该使用<cstring>
而不是<string.h>
Wiki说:
c++标准库还包含了ISO c90c的18个头文件以".h"结尾的标准库,但不推荐使用。所有c++标准库中的其他头文件不要以".h"结尾。
C标准库中的每个头文件都包含在c++中标准库以不同的名称,通过删除。h生成,在开头加一个"c";例如,'time.h'变成'ctime'。
string为c++ STL头文件提供模板类' string 'h是c标准头文件提供许多功能使用。比如strlen strcpy记忆。如果你想在命名空间std中使用,而不是使用全局命名空间或者不想使用string.h
*.h
头文件通常是C头文件,您可以在c++中使用extern "C" { ... }
包装
没有*.h
的头通常是真正的c++头。
这只是一个经验之谈。
最新和以前的c++标准(c++11, c++ 03)定义了像<cstdio>
这样的头文件,使用名称空间等来正确包装原始的C头文件。
标准为
#include <string>
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- EASTL矢量<向量<int>>连续的
- 使用 std::string () const 函数启动线程或未来
- 使用char类型将decimal转换为string,将string转换为decimal
- 迭代和比较映射<字符串、矢量<string>> c++ 中的值
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 将向量解析<string>为字符串
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 如何更改大小(std::string)
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- std::string 的对象真的可以移动吗?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- <string> 使用 for 循环写入向量