std::cin和std::cout和std::endl
时间: 2023-08-30 14:04:49 浏览: 62
std::cin和std::cout都是C++标准库中的流对象,分别用于从标准输入流中读取数据和向标准输出流中写入数据。两者都需要包含头文件iostream来使用。
std::endl是C++标准库中的一个操作符,用于向输出流中插入一个换行符,并刷新输出缓冲区。通常情况下,我们可以使用'\n'来表示换行符,但使用std::endl可以保证在输出换行符后立即刷新缓冲区,确保输出的数据可以及时显示在屏幕上。例如,可以使用std::cout << "Hello world!" << std::endl;输出"Hello world!"并换行。
需要注意的是,std::endl是一个操作符,而不是一个普通的函数或变量,因此不需要使用括号来调用。
相关问题
#include <iostream> #include <string> class Person { protected: std::string name; int age; std::string addr; public: void get_value() { std::cout << "请输入姓名:"; std::cin >> name; std::cout << "请输入年龄:"; std::cin >> age; std::cout << "请输入地址:"; std::cin >> addr; } }; class Teacher : public Person { public: void display() { std::cout << "姓名:" << name << std::endl; std::cout << "年龄:" << age << std::endl; std::cout << "地址:" << addr << std::endl; std::cout << "我是教师" << std::endl; } }; class Student : public Person { public: void display() { std::cout << "姓名:" << name << std::endl; std::cout << "年龄:" << age << std::endl; std::cout << "地址:" << addr << std::endl; std::cout << "我是学生" << std::endl; } }; int main() { Teacher t; Student s; s.get_value(); t = s; t.display(); return 0; }并重载operator=
在上面的代码基础上,我们可以为Teacher类重载operator=,使得可以直接将一个Student对象赋值给Teacher对象。代码如下:
```cpp
#include <iostream>
#include <string>
class Person {
protected:
std::string name;
int age;
std::string addr;
public:
void get_value() {
std::cout << "请输入姓名:";
std::cin >> name;
std::cout << "请输入年龄:";
std::cin >> age;
std::cout << "请输入地址:";
std::cin >> addr;
}
};
class Teacher : public Person {
public:
void display() {
std::cout << "姓名:" << name << std::endl;
std::cout << "年龄:" << age << std::endl;
std::cout << "地址:" << addr << std::endl;
std::cout << "我是教师" << std::endl;
}
Teacher& operator=(const Student& s) {
this->name = s.name;
this->age = s.age;
this->addr = s.addr;
return *this;
}
};
class Student : public Person {
public:
void display() {
std::cout << "姓名:" << name << std::endl;
std::cout << "年龄:" << age << std::endl;
std::cout << "地址:" << addr << std::endl;
std::cout << "我是学生" << std::endl;
}
};
int main() {
Teacher t;
Student s;
s.get_value();
t = s;
t.display();
return 0;
}
```
在Teacher类中,我们重载了operator=,使得可以将一个Student对象s赋值给Teacher对象t。在重载函数中,我们将s的数据成员name、age和addr分别赋值给t的对应成员,并返回一个指向t的引用。在主程序中,我们可以看到,我们仍然先创建了Teacher和Student对象t和s,然后调用s的get_value()函数获取数据,接着将s赋值给t,最后调用t的display()函数输出数据。
c++ std::cout
c++中的std::cout是一个输出流对象,用于将数据输出到控制台或者其他输出设备。在使用std::cout之前,需要包含头文件<iostream>。在使用std::cout时,可以使用三种不同的方法:使用std命名空间、使用std命名空间中的cout、使用using指令。其中,使用std命名空间是最常见的方法,也是最推荐的方法。下面是三种方法的示例代码:
1.使用std命名空间:
#include <iostream>
using namespace std;
int main(){
int i;
cin >> i;
cout << i << endl;
return 0;
}
2.使用std命名空间中的cout:
#include <iostream>
int main(){
int i;
std::cin >> i;
std::cout << i << std::endl;
return 0;
}
3.使用using指令:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main(){
int i;
cin >> i;
cout << i << endl;
return 0;
}