c++怎么读取文本文件中矩阵,得到矩阵的列数
c++如何读取文本文件中矩阵,得到矩阵的列数
对于存储一个矩阵的文本文件中的行数,我们可以很轻易的用一个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 ; }