何时在<string>程序中包含标头?



当已经提供了解决方案的库时,您是否包括"字符串"标头?

示例:如果您已经包含了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类编程分配中收到点,因为即使程序有效,老师说使用字符串数据类型时,我需要包括字符串库。即使从技术上讲,这也很好。那就是问题。

您的老师是正确的。

您的程序在没有<string> 的情况下奏效。您的标准库实施,该版本,在该平台上,在这种情况下,当天,您可以通过<iostream>提供了您所需的内容。标准库是像您一样的代码,而且碰巧的是,您的特定实现包含<iostream>内部的#include <string>。它可以埋葬在许多其他#include S后面,但最终到达那里。但这是诚实的纯粹机会,并不意味着这是语言保证的东西,或者即使在实践中也必须永远是这种情况。

您应该始终符合标准。

如果您使用的是<string>中的功能,请包括<string>

今天,我正试图使用新的工具链构建我的大型项目,并找到了一些我不小心依赖及物的地方,因此破坏了构建,因为新的标准库实施略有不同标题的安排。我尽职尽责地添加了缺少的#include S,现在世界是一个更好的地方。

最新更新