c++的输入输出
第二行有若干个数据,分别表示文件的大小,0表示结束。文件的个数不超过100个。
输出硬盘剩下的空间
样例输入
10
4 2 2 4 5 7 0
样例输出
0
样例输入2
15
1 1 3 4 5
样例输出2
1
这个问题必须严格按照样例输入的方式输入。/。
就是第二行的数字求和,如果比第一行大,输出0,否则输出第一行减去第二行数字和的差。
第二行数字之间是空格,且个数不确定,但小于1000。
我的困难就在于,如何按照这种方式把数字输入到数组或者向量中?
不是文件流的问题。。 是运行中按照这种格式输入。。 展开
#include <iostream>
#include<string>
#include<sstream>
using namespace std;
main()
{
int hdsize, sum, num;
string s;
while(1)
{
hdsize=0;
sum=0;
cout<<"input data(-1 to exit program):" ; //提示程序继续运行或退出
cin>>num;
if (num==-1) break;
hdsize=num;
int ok=1;
while(getline(cin,s)&&ok) {
istringstream ss(s);
int d;
while(ss >> d)
{
sum+=d;
if(!d)
{
ok=0;
cout<<"hd:"<<hdsize<<endl;
cout<<"sum:"<<sum<<endl;
if (hdsize>sum)
cout<<"REMAIN:"<<hdsize-sum<<endl;
else
cout<<"REMAIN:0"<<endl;
cout<<"press ENTER to continue..."<<endl;
//上面这句不能删除,必须要按 ENTER 才会执行到输入外面的大循环
//按其它键,没有用的.为什么是这样,我也不太明白.如果有人懂的请指教一下.
break;
}
}
}
}
}
附:istringstream这个很有用.详情可看
http://www.cppreference.com/wiki/string/getline
After getting a line of data in a string, you may find that stringstreams are useful in extracting data from that string.
......
参考资料: http://www.cppreference.com/wiki/string/getline
c++兼容c,c里的输入输出在c++里均可以使用。
http://hi.baidu.com/%B1%E0%B3%CC%D3%D0%CE%D2/blog/item/3138b6599a68342c2834f004.html
您也可以在网络上搜索一下相关教程。
cout<<"press ENTER to continue..."<<endl;
//上面这句不能删除,必须要按 ENTER 才会执行到输入外面的大循环
//按其它键,没有用的.为什么是这样,我也不太明白.如果有人懂的请指教一下.
break;
输出是cout