文件操作在头文件
用fstream定义一个流,再对这个流进行操作即可。具体见例子。
#include
#include
using namespace std;
int main()
{
//首先定义一个流 input_stream
fstream input_stream;
//然后用流的open函数打开一个文件,最好用绝对路径,注意为了避免路径被解释为转义字符,必须用双斜杠。最后的 ios::in 参数表示读取。
input_stream.open("D:\\temp.txt",ios::in);
int a;
//下面这句表示从流内读取一个整数到变量a,可以类比 cin 的使用方法
input_stream >> a;
cout << a << endl;
return 0;
}
基本没看懂你程序想表达的意思。但是有个明显错误是while (fin >> test[i])
test对象是动态的,不同于低级数组。此时,test是空的,你进行下标操作肯定是错误的。
然后鉴于没看懂你的程序,我按你的思路写个简单的例子:
#include
#include
#include
using namespace std;
int main()
{
string fileName;
cout << "Enter filename: ";
cin >> fileName;
fstream fs(fileName.c_str());
if (!fs) {
cout << "can't open file: " << fileName << endl;
return -1;
}
string test;
while (getline(fs, test))
cout << test;
fs.close();
return 0;
}
还有,ifstream ofstream一般用与单项的操作,fstream 用于双向的。
ifstream派生于istream
ofstream派生于ostream
fstream派生于iostream
iostream派生于istream和ostream
while(fin>>test[i])i++; //test[i] 什么类型? 可以先定义, 然后读取
count=i;
}
for(int i=0;i
例子 :
#include
#include
using namespace std;
int main()
{
int a[10],max,i,order;
ifstream infile("f3.dat",ios::in);
if(!infile)
{
cerr<<"oper error!\n";
exit(1);
}
for(i=0;i<10;i++)
{
infile>>a[i];
cout< }
cout<
for(i=0;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
order=i;
}
}
cout<<"max="<
return 0;
}