@CrazyHenry
2018-01-23T13:14:23.000000Z
字数 1184
阅读 1289
ccccC++Primer
- Author:李英民 | Henry
- E-mail: li
_
yingmin@
outlookdot
com- 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 transactions
std::cout << item1 + item2 << std::endl; //print their sum
return 0;
}
编译之后,执行可执行文件:
$ ./bobo.exe <item >itemresult
将书店item增加空格和回车试试:
结果:
结果:
输入失效实际上是检测cin对象的状态,对于文件来说,这种状态也是类似的。比如我的文件里 7 7 4 + 8 9,读取到+号,则cin对象失效,结束读取,继续执行剩余的代码,再之后的8和9就忽略了。
回车和空格不算是输入错误,这应该是输入流的一种机制,用于判断输入的每一个条目信息。
在控制台上输入,即使已经输入错误或者输入结束符,也必须手动回车才能显式的结束输入(实际早就结束了);而对于文件读取,只要遇到结束符或者输入错误,即刻结束输入。
比如:
#include <iostream>
int main()
{
// prompt user to enter two numbers
std::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 read
while (std::cin >> value)
sum += value; // equivalent to sum = sum + value
std::cout << "Sum is: " << sum << std::endl;
return 0;
}
再换一个item例子:
结束符该怎么输入呢?还不是很清楚。有一点可以确定,文件是自带结束符的,不用显式写出,程序在读到最后一行就结束读取了。