c++15、流&输入输出流入栈方式

在前面我们已经使用过cout和endl.下面直接使用程序说明一下输入输出流:


s1和s2定义了一个string输入流,而i和j从流中读取数据。

输出语句,可以简单地翻译为,把i和j 输出到,标准输出流。

结果如下:


结果不同的原因在于,istringstream 以string为单位,它的含有两个形参的构造函数,basic_istringstream(const _Mystr& _Str,
ios_base::openmode _Mode = ios_base::in),这么看来,s2输入的那个“3”是无效的。而istrstream 以char*为标准,可以只读取3个字符,所以输出结果不一样。

看一段摘自《C++primer》的示例代码:


你分析出所有答案了吗?

下面是运行结果:


输出 1  1  说明先进行了++i,

输出A STRING  说明最后运行的是 toupper()。

这有什么共性吗?

说明在编译器上,输出是从右侧入栈的。


另:经测试,在gcc也是先求++i,而后输出i。这也说明在我们最常用的这两种编译器上,结果是确定且一致的,并没有出现输出的不确定性(not undefined),都是从右侧入栈,而后输出。


你可能感兴趣的:(c++15、流&输入输出流入栈方式)