int main()
{
std::string dd = "ddd";//会报错namespace "std" has no member "string",因为没有引入string库
}
#include<string>
int main()
{
string dd = "ddd"; //虽然编译单元包含了string,但是这个string还是找不到,因为string在std中,必须加std::才能找到string
std::string dd = "ddd";//这样就不会报错了
}
#include<string>
using namespace std;//在这个域中用using声明了std::string
int main()
{
string dd = "ddd"; //string能找到了,这个string就是std::string
}
#include<iostream>
int main()
{
std::string dd = "ddd"; //不会报错,因为iostream里面include了string
}
总结:
#include <string>
就是将string库包含到当前编译单元中.
using namespace std;
1.尽量不要写using namespace std;因为随着项目的增大,会污染其他的文件,很难查出问题
因为使用using namespace std;的话就没有起到命名空间的作用。再次回到了如同没有涉及命名空间时,所有标示符都定义在全局作用于中的混乱情况,不利于程序员创建新对象。
2.如果,把using namespace std; 写在全局中.
就是将std里的所有名字暴露在当前编译单元的各个域中,
3.如果using std::string在单独的域中,就可以在该域中直接使用string, 少打std::了,比较方便
一个编译单元会有很多域...一般,这个只会出现在单独的域中