#include "stdafx.h" #include <iostream> #include <string> using std::cout; using std::endl; using std::cin; using std::string; int main(void) { char chars1[20]; char chars2[20] = "jaguar"; string str1; string str2 = "pather"; cout << "Enter a kind of feline: " << endl; cin >> chars1; cout << "Enter another kind of feline: " << endl; cin >> str1; cin.get(); return 0; }
上面的程序如果没有#include<string>,则cin>>str1将会报错,而string str1不会报错
也就是说在没有#include<string>的情况下,是可以定义std::string变量的,只是不能使用cin进行输入。
到底在没有头文件<string>的时候,std::string 是个什么东东,怎么理解?
那是因为对 string 的 >> 运算符重载是在 string 头文件中定义的;所以没有 string 头文件,就不能使用 >> 对 string 类型变量操作了
可以定义std::string变量,是因为引入了iostream头,关于>>运算符,1楼已经说了