我编写了一些代码,以从输入文件中获取数据(这只是一列0和1),然后将其转换为许多32位数字。当我知道输入文件中有多少个数字时,这种方法可以正常工作。我正在尝试对其进行修改,以使其适用于我不知道大小的其他输入文件,这就是我遇到问题的地方
我的输入文件是rad。
我试过了:
int x=0;
while(!rad.eof()) {
x++;
}
cout << x;
什么也不会返回
while(!rad.eof()) {
rad >> x;
cout << x << endl;
}
这会返回很多相同的大数
while(!rad.eof()) {
rad >> x;
cerr << x << endl;
}
返回很多零
当我知道输入文件的大小时,可用的代码是:
/*const int m=32,n=40000; //n isnt 40000, change it so that its the size of radioactivedata
int a[n]; // variable to hold each number as it is read from file
int i=0,j=0; //define variables
for ( i=0 ; i<n ; i++ ) a[i]=0;
for ( i=0 ; i<n ; i++ ); rad >> a[i]; //read numbers from rad into array with (>>) operator
unsigned long Num=0;
while(j<n){
i = 0; //reinitialize i and Num
Num = 0;
while ( i<m ){
Num = Num + (a[j])*pow(2.,i);
i++;
j++;
}
cout << j/m << "\t" << Num << endl;
out << j/m << "\t" << Num << endl;
}*/
任何帮助将不胜感激,请使用简单的语言。
最佳答案
假设rad
是 std::ifstream
,则可以使用 seekg()
和 tellg()
// std::ios_base::ate seeks to the end of the file on construction of ifstream
std::ifstream rad ("file.txt", std::ios_base::ate);
int length = 0;
if (rad) {
length = is.tellg();
is.seekg (0, std::ios_base::beg); // reset it to beginning if you want to use it
}
// .. use length
关于c++ - 如何找到输入文件的大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35313589/