我有几个关于在C++中调用C标准库函数的问题:
- 如果我想打电话
getline()
在<stdio.h>
中声明是否总是包含<cstdio>
就足够了? ?这适用于我正在使用的编译器,我看到它包括<stdio.h>
在<cstdio>
但我想知道标准是否保证这一点。 - 是否保证所有 C 标准库函数都可以在 C++ 中使用?随着
getline()
上面的例子我注意到在 cppreference 上在<cstdio>
下它没有列出getline()
. - 对于
std::
中可用的 C 标准库函数和类型命名空间,如FILE
或malloc()
他们通过全局命名空间访问它们有什么问题,还是以std::FILE
访问它们更符合习惯?或std::malloc()
?
最佳答案
您应该始终包含文档告诉您的内容。 (C++ 标准库实现通常会被编写成函数可以通过其他包含访问,但当然依赖这意味着您的代码不可移植。)请注意,没有标准 getline
C 中的函数。但在 C++ 中有一个函数:
std::getline()
在 header 中定义 <string>
.通常,C++ 标准不保证 C 函数在全局范围内可用,甚至不保证是 C++ 标准库的一部分。这两种语言多年前就开始出现分歧,因此认为 C++ 在某种意义上是 C 的超集(包括库)的想法是一个神话。
引用:https://en.cppreference.com/w/cpp/string/basic_string/getline
关于c++ - 调用C标准库函数的标准C++方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54213068/