关于#include <>和 using namespace std的有关问题

关于#include <...>和 using namespace std的问题
C/C++ code

最近学c#。。讲到c#中的namespace.老师说namespace就相当于包的意思。。相当于java中的package.c++中的namespace
要用某个类直接包含定义这个类的包名就行了。
但在c++就比较困惑了。。
比如
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string str = "abc";

}
为什么包含了定义string的头文件还要using namespace std;....
难道string 在#include <string>和std命名空间中都定义一部分么?要整合起来才能用么?



------解决方案--------------------
iostream和string都是命名空间std里面的