gpt4 book ai didi

c++ - 何时在程序中包含 header ?

转载 作者:搜寻专家 更新时间:2023-10-31 00:51:30 26 4
gpt4 key购买 nike

当“iostream”等库已经提供解决方案时,您是否包含“string” header ?

示例:如果您已经包含 iostream 库,您是否包含字符串库?哪种专业方法才是正确的?

#include <iostream>
#include <fstream>

using namespace std;
int main() {
ifstream fin;
fin.open("input.txt");
string data;
fin >> data;
cout << data << endl; // Works with <iostream>, and without <string>
fin.close();
return 0;
}

示例 2:如果另一个库提供功能,则使用字符串库,即使程序编译时没有字符串?

#include <iostream>
#include <string>
#include <fstream>

using namespace std;
int main() {
ifstream fin;
fin.open("input.txt");
string data;
fin >> data;
cout << data << endl; // Even though <iostream> allowed program to compile, we include the <string> library.
fin.close();
return 0;
}

我的 CSC 101 类(class)编程作业得到了分数,因为即使程序有效,老师说在使用字符串数据类型时我需要包含字符串库。即使从技术上讲,没有它也很好。 就是这个问题。

最佳答案

你的老师是对的。

你的程序在没有 <string> 的情况下运行偶然。在那种情况下,在那一天,你在那个平台上那个版本的标准库实现,通过 <iostream> 传递地包含了你需要的东西。 .标准库只是代码,就像您的代码一样,您的特定实现恰好包含在 <iostream> 中。 , 一个 #include <string> .它可能被埋在许多其他的后面#include但最终还是到了那里。但这纯粹是偶然,并不意味着这是语言保证的事情,或者即使在实践中也必须始终如此。

您应该始终按照标准进行编码。

如果您使用 features from <string> , 包括 <string> .

就在今天,我试图用一个新的工具链构建我的大项目,发现了一些我不小心依赖传递包含的地方,结果它破坏了构建,因为新的标准库实现略有不同标题的安排。我尽职尽责地添加了缺失的 #include s,现在世界变得更美好了。

关于c++ - 何时在程序中包含 <string> header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54936396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com