关于using namespace std;与自定义类冲突的有关问题

求教:关于using namespace std;与自定义类冲突的问题
//use the class
#include<iostream>
#include<cstring>
#include"string.h"

const int arsize=10;
const int maxlen=81;
int main()
{
        using namespace std;
string name;//string是自定义的类,但是编译的时候报错说string不明确
cout<<"Hi,what's your name?\n";
cin>>name;
cout<<name<<", please enter up to "<<arsize
<<"short sayings <empty line to quit>:\n";
string saying[arsize];
char temp[maxlen];
int i;
for (i=0;i<arsize;i++)
{
cout<<i+1<<": ";
cin.get(temp,maxlen);
while(cin&&cin.get()!='\n')
continue;
if(!cin||temp[0]=='\0')
break;
else
saying[i]=temp;
}
int total=i;
if (total>0)
{
cout<<"Here are your sayings:\n";
for (i=0;i<total;i++)
cout<<saying[i][0]<<": "<<saying[i]<<endl;
int shortest=0;
int first=0;
for (i=i;i<total;i++)
{
if(saying[i].length()<saying[shortest].length())
shortest=i;
if(saying[i]<saying[first])
first=i;
}
cout<<"shortest saying:\n"<<saying[shortest]<<endl;
cout<<"first alphabetically:\n"<<saying[first]<<endl;
cout<<"this program used "<<string::howmany()<<" string objects.Bye.\n";
}
else
cout<<"no input!Bye.\n";
return 0;

}


string是自定义的类,但是编译的时候报错说string不明确,如果改成

        using std::cout;
using std::cin;
using std::endl;
string name;

就没有问题,有没有人可以帮我解释一下这是为什么?多谢各位了

------解决方案--------------------
#include<cstring>
#include"string.h"
用的不对,应该这样改:
#include <cstring>
#include <string>
因为cstring相当于string.h,而string才是包含string类型的。

引用:
//use the class
#include<iostream>
#include<cstring>
#include"string.h"

const int arsize=10;
const int maxlen=81;
int main()
{
        using namespace std;
string name;//string是自定义的类,但是编译的时候报错说string不明确
cout<<"Hi,what's your name?\n";
cin>>name;
cout<<name<<", please enter up to "<<arsize
<<"short sayings <empty line to quit>:\n";
string saying[arsize];
char temp[maxlen];
int i;
for (i=0;i<arsize;i++)
{
cout<<i+1<<": ";
cin.get(temp,maxlen);
while(cin&&cin.get()!='\n')
continue;
if(!cin
------解决方案--------------------
temp[0]=='\0')
break;
else
saying[i]=temp;
}
int total=i;
if (total>0)
{
cout<<"Here are your sayings:\n";
for (i=0;i<total;i++)
cout<<saying[i][0]<<": "<<saying[i]<<endl;
int shortest=0;
int first=0;
for (i=i;i<total;i++)
{
if(saying[i].length()<saying[shortest].length())
shortest=i;
if(saying[i]<saying[first])
first=i;
}
cout<<"shortest saying:\n"<<saying[shortest]<<endl;
cout<<"first alphabetically:\n"<<saying[first]<<endl;
cout<<"this program used "<<string::howmany()<<" string objects.Bye.\n";
}
else
cout<<"no input!Bye.\n";
return 0;

}


string是自定义的类,但是编译的时候报错说string不明确,如果改成

        using std::cout;
using std::cin;
using std::endl;
string name;

就没有问题,有没有人可以帮我解释一下这是为什么?多谢各位了