对于存储一个矩阵的文本文件中的行数,我们可以很轻易的用一个getline函数得到,代码在下面,但是如何得到列数了,是把它一行一行的读进来,然后再写代码分解吗?太麻烦了把,现在想到了一个简便的方法,我们知道文本文件的末尾有一个\n作为换行符,而元素与元素之间有一个空格相隔,所以我们每读取一个数字, 就判断后面一个符号是不是换行符,这样我们就能得到一行的列数. peek 和 get 函数都可以实现, peek只是检查,不会让流前进,而get会让流前进.
int getFileColumns(const char * fileName){
ifstream fileStream ;
fileStream.open(fileName,std::ios::_Nocreate);
double tmp;
char c;
int count=0;
for(int i=0;i<10000;i++){
fileStream>>tmp;
++count;
c=fileStream.peek();
if('\n'==c)
{
break;
}
}
fileStream.close();
return count;
}
int getFileRows(const char *fileName){
ifstream fileStream;
string tmp;
int count=0;
fileStream.open(fileName);
if(fileStream){
while(getline(fileStream,tmp,'\n')){
count++;
}
fileStream.close();}
return count ;
}