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

C++里为何不写include<string>但也可以创建string对象?c++不写 include<string>只写usingstd::string为什么... C++里 为何不写include<string>但也可以创建string对象?c++ 不写 include <string> 只写 using std::string为什么也可以?

比如:
#include <iostream>

using namespace std;

int main()
{
string str1 = "aaabbbccc";
cout<< str1 << endl;
}

求解释,网上一堆破答案说“必须要include<string>,说什么这才是真正定义string的地方。 那为何我这里不include也能完美运行和使用string??
展开
 我来答
巴别里的牧童
2019-08-01
知道答主
回答量:7
采纳率:100%
帮助的人:4702
展开全部

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

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

#include <iostream>
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>却能使用string的原因在于命名空间std中有关于string的定义。

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

菜鸡小神马8
2016-09-16 · TA获得超过188个赞
知道小有建树答主
回答量:326
采纳率:50%
帮助的人:169万
展开全部
#include<iostream>
#include<iomanip>
#include<fstream>
#include<string>

using namespace std;

int main()
{

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

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

return 0;
} //string类型定义在string文件中
追问
复制了一堆无关的代码

以后不要再瞎答了 我曹。 害得我找不到真正的答案!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谁知故人心
2017-12-29
知道答主
回答量:23
采纳率:100%
帮助的人:9.6万
展开全部
因为string类已经基本被包含在了iostream中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式