1.iostream文件在C++ I/O中扮演何种角色
C++语言把数据的输入/输出以字节信息流的形式进行处理。通过类的继承关系,C++中预定了大量用于数据输入/输出的类,其中iostream文件的核心是istream和ostream两个类的定义,分别表示输入流与输出流中用于管理输入和输出的类,常量以及运算符,是系统I/O中最基本的库文件。该文件还创建了一些标准对象(cin, cout, cerr 和 clog以及对应的宽字符对象),用于处理与每个程序相连的标准输入流和输出流。
2.对于键入的数字,为什么要求程序进行转换
系统的标准化输入工具首先将从键盘输入的信息按照一系列字符的形式读取进数据缓冲区。例如,输入121将生成3个字符,分别是1, 2,1,按照系统的规定每个字符使用1字节的二进制数据表示。C++程序中如果通过标准I/O表示输入的数据是int类型的数值,那么程序将会自动将这3个字符转换为int类型的数据121,并按照int类型的方式以32位数据的形式存储为二进制数据。
3.标准输出与标准错误之间有什么区别
在默认情况下,标准输出和标准错误都将连接标准输出设备(通常为显示器),因此两者的差别不大。但是如果要求操作系统将输出重定向到文件,则标准输出将与文件(而不是显示器)相连,但标准错误仍与显示器相连
4.在不为每个类型提供明确指示的情况下,为什么cout仍能够显示不同的C++类型
C++语言中预定义的标准输入/输出中的ostream类已经为C++基本类型(如各种int类型,浮点类型,字符类型)定义了operator<<()运算符重载函数,因此当输出不同类型的数据时"<<"运算符能够查找相应的重载函数。但是对于用户自定义类型,还需要在类定义中手动重载相应的运算符,才能够正确使用运算符"<<"输出。
5.输出方法的定义中的哪个特征能够用来拼接输出
当使用标准输出流进行数据输出时,对于用户自定义类型,需要重载 "<<"运算符。为了实现输出语句的拼接,即cout << "Hello " << "world." << endl的形式,在重载运算符时,必须返回ostream &类型的对象。这样,当通过一个对象调用方法时,将返回该对象,返回对象可以继续调用序列中的下一个方法,从而拼接输出。
6.编写一个程序,要求用户输入一个整数,然后以十进制,八进制和十六进制显示该整数。在宽度为15个字符的字段中显示每种形式,并将它们显示在同一行上,同时使用C++中的数基前缀
int main()
{
int n;
cin >> n;
cout << setw(15) << "base ten" << setw(15) << "base sixteen" << setw(15) << "base eight" << "\n";
cout << showbase;
cout <return 0;
}
7.编写一个程序,请求用户输入下面的信息,并按下面的格式显示它们
8.对于下面的程序,回答下面的问题
9.下面的两条语句都读取并丢弃行尾之前的所有字符(包括行尾)。这两条语句的行为有哪些不同?
while (cin.get() != '\n')
continue;
cin.ignore(80, '\n');
cin.get()方法会一次读取一个字符,并判定是否为换行符,如果不是,则丢弃重新读取下一个数据,因此可以持续循环。通过ignore(80, '\n')函数读取数据并丢弃有两个条件,一是数据不超过80个字符,二是遇见第1个换行符,因此在这种情况下,ignore()函数最多读取不超过前80个字符