C++里 为何不写include<string>但也可以创建string对象?

2024-11-20 15:26:44
推荐回答(3个)
回答1:

我今天也遇到了这个问题。

我在VS2019中写了一个短的测试程序:

#include 
using namespace std;

int main() {
string s;
cin >> s;
cout << s;

return 0;
}

这是可以正常运行的,我ctrl+鼠标左键点击“string”,可以发现在“xstring”中有关于string的定义:

那么xstring又在哪呢?

我ctrl+鼠标左键点击“std”,可以发现“xstring”是包含在std这个命名空间下的(图中第二行):

而我在“iostream”中搜索不到“string”的相关内容(右上角红色框框表示无匹配):

故对于VS2019平台而言,不包含却能使用string的原因在于命名空间std中有关于string的定义。

这根据平台而言有所差别。

回答2:

#include
#include
#include
#include

using namespace std;

int main()
{

ifstream input;
string inputfile;//string,下同
cout<<"please input inputfile name"< cin>>inputfile;
input.open("inputfile");//加;下同

ofstream output;
string outputfile;
cout<<"please input outputfile name"< cin>>outputfile;
output.open("outputfile");

return 0;
} //string类型定义在string文件中

回答3:

因为string类已经基本被包含在了iostream中