我写了一个简单的程序如下:
#include <iostream>
#include <string>
int main()
{
string a;
std::cin >> a;
std::cout << a << std::endl;
return 0;
}
无法编译,编译器建议我使用std::string
而不是string
。
使用std::string
后,一切都很好。
我的问题是为什么我的程序需要使用std::string
才能成功编译?
答案 0 :(得分:1)
string
类位于命名空间std
中。您可以删除std::
。
您最好将其包含在main函数中,因此如果您使用使用名称字符串或cout
的库,则名称不会更正。
#include <iostream>
#include <string>
int main()
{
using namespace std;
string a;
cin >> a;
cout << a << endl;
return 0;
}
答案 1 :(得分:0)
string
位于std
名称空间中,只有std::string
而不是string
才有效(std::cin
std::vector
string
{ 1}}等)。但是,在实践中,一些编译器可能会使用std::
等程序而不使用std::
前缀编译,这使得一些程序员认为可以省略#include <iostream>
#include <string>
int main()
{
std::string a;
std::cin >> a;
std::cout << a << std::endl;
return 0;
}
,但它可以#39} ; s不在标准C ++中。
所以最好使用:
using namespace std;
请注意,使用std::
并不是一个好主意(尽管它是合法的),尤其不要将其放在标题中。
如果您厌倦了键入所有#include <iostream>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
int main()
{
string a;
cin >> a;
cout << a << endl;
return 0;
}
,请声明所有带有命名空间的名称使用是一个选项:
{{1}}