@CrazyHenry
2018-01-23T05:14:23.000000Z
字数 1184
阅读 1822
ccccC++Primer
- Author:李英民 | Henry
- E-mail: li
_yingmin@outlookdotcom- Home: https://liyingmin.wixsite.com/henry
快速了解我: About Me
转载请保留上述引用内容,谢谢配合!
使用文件重定向:

#include <iostream>#include "Sales_item.h"int main(){Sales_item item1, item2;std::cin >> item1 >> item2; //read a pair of transactionsstd::cout << item1 + item2 << std::endl; //print their sumreturn 0;}

编译之后,执行可执行文件:
$ ./bobo.exe <item >itemresult




将书店item增加空格和回车试试:

结果:

结果:

输入失效实际上是检测cin对象的状态,对于文件来说,这种状态也是类似的。比如我的文件里 7 7 4 + 8 9,读取到+号,则cin对象失效,结束读取,继续执行剩余的代码,再之后的8和9就忽略了。
回车和空格不算是输入错误,这应该是输入流的一种机制,用于判断输入的每一个条目信息。
在控制台上输入,即使已经输入错误或者输入结束符,也必须手动回车才能显式的结束输入(实际早就结束了);而对于文件读取,只要遇到结束符或者输入错误,即刻结束输入。
比如:
#include <iostream>int main(){// prompt user to enter two numbersstd::cout << "Enter two numbers:" << std::endl;int v1 = 0, v2 = 0;std::cin >> v1 >> v2;std::cout << "The sum of " << v1 << " and " << v2<< " is " << v1 + v2 << std::endl;return 0;}
这个程序只读取两个数据,多余的都会被忽略,只不过在控台输入最终必须敲回车才能体现出来。

下面用前面的int型数字的输入做个试验:
#include <iostream>int main(){int sum = 0, value = 0;// read until end-of-file, calculating a running total of all values readwhile (std::cin >> value)sum += value; // equivalent to sum = sum + valuestd::cout << "Sum is: " << sum << std::endl;return 0;}



再换一个item例子:


结束符该怎么输入呢?还不是很清楚。有一点可以确定,文件是自带结束符的,不用显式写出,程序在读到最后一行就结束读取了。
