Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ txt文件中有一个矩阵,如何从中获取行和列?C++;_C++_File_Matrix_Size - Fatal编程技术网

C++ txt文件中有一个矩阵,如何从中获取行和列?C++;

C++ txt文件中有一个矩阵,如何从中获取行和列?C++;,c++,file,matrix,size,C++,File,Matrix,Size,我用的是代码块 我的文件如下: A: B w w V B: C w A W C: D w B X D: E w C Y E: F w D Z 我需要得到行数和列数,在本例中是4x5。(带:的字母不计算在内) 我的第一个解决方案是使用变量计数器计算矩阵的维数,但这不是一个好的解决方案 什么函数可以获取.txt文件中矩阵的大小?欢迎您提供任何建议。您需要使用getline逐行阅读文件 std::vector<string> lines; std::string line; while(

我用的是代码块

我的文件如下:

A: B w w V
B: C w A W
C: D w B X
D: E w C Y
E: F w D Z
我需要得到行数和列数,在本例中是4x5。(带
的字母不计算在内)

我的第一个解决方案是使用变量
计数器
计算矩阵的维数,但这不是一个好的解决方案


什么函数可以获取.txt文件中矩阵的大小?欢迎您提供任何建议。

您需要使用getline逐行阅读文件

std::vector<string> lines;
std::string line;
while(std::getlin(fileStream, line)
{
   lines.push_back(line);
}
现在,对于每一行,您可以使用字符串流计算其中的元素数

std::istringstream iss (lines[i]);
std::string dummy; //used to munch the initial `a:` part of the string which  you don't need
iss >> dummy;
int numberOfColumns = 0;
char x;
while(iss >> x)
    ++numberOfColumns;

为什么这不是一个好的解决方案?你有什么办法吗?这不是代码制造商平台。@ScottHunter使用“计数器”我必须打开文件两次,一次用于获取大小,另一次用于执行其他操作。我的老师说打开一个文件要花很多钱,我试着做所有的工作,只打开一次文件。@etalon11我有我的代码,但正在做其他事情,我被困在那一部分。这不正是OP认为不好的解决方案吗?@ScottHunter你是对的,但是阅读Armen的建议一些想法出现在我的脑海中…我没有找到解决我问题的函数,但我担心会打开文件两次,所以为了处理它,我阅读了文件两次,一次是为了得到行和列,然后我开始,另一次是为了完成文件的所有工作,这对于代码来说并不昂贵。不幸的是,这是在.txt文件中获得矩阵维数的唯一方法,我进行了深入搜索,什么也找不到。谢谢你们的帮助!
std::istringstream iss (lines[i]);
std::string dummy; //used to munch the initial `a:` part of the string which  you don't need
iss >> dummy;
int numberOfColumns = 0;
char x;
while(iss >> x)
    ++numberOfColumns;