Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ 将文本文件读入矩阵的问题_C++_Matrix - Fatal编程技术网

C++ 将文本文件读入矩阵的问题

C++ 将文本文件读入矩阵的问题,c++,matrix,C++,Matrix,我试图将文本文件中的数据读入矩阵。文本文件如下所示 Object data Format 6 1 5241.365147 -77215.356982 248612.514352 0.000014 0.000009 0.000051 2 5242.871592 -77213.351692 248614.103512 0.000013 0.000008 0.000052 ... 我在这个网站上搜索了以前的答案,寻找类似的问题,并编写了以下代码 #include <iostream> #

我试图将文本文件中的数据读入矩阵。文本文件如下所示

Object data
Format 6
1 5241.365147 -77215.356982 248612.514352 0.000014 0.000009 0.000051
2 5242.871592 -77213.351692 248614.103512 0.000013 0.000008 0.000052
...
我在这个网站上搜索了以前的答案,寻找类似的问题,并编写了以下代码

#include <iostream>
#include <fstream>
#include <vector>

using namespace std

int main ()
{
// Initialize variables
int i, j, i_max, j_max;
i_max = 7;
j_max = 4;

//Open the input file
ifstream infile;
infile.open ("data.txt");

//Loop through the values in the text file
double data [i_max][j_max];
for (i=0; i<i_max; i++) {
    for (j=0; j<j_max; j++) {
        infile >> data[i][j];
        printf ("%d\n", data[i][j]); //Check the input 
    }
}

return 0;
}
#包括
#包括
#包括
使用名称空间std
int main()
{
//初始化变量
int i,j,i_max,j_max;
i_max=7;
j_max=4;
//打开输入文件
河流充填;
infle.open(“data.txt”);
//循环浏览文本文件中的值
双数据[i_max][j_max];
对于(i=0;i数据[i][j];
printf(“%d\n”,数据[i][j]);//检查输入
}
}
返回0;
}

我遇到的问题是,我用来检查输入的printf语句只将j_max的值写入终端。如果有任何帮助,我们将不胜感激。

这是否真的包含在您的输入文件中

Object data
Format 6
如果是这样,只需跳过以下几行:

char s[10];
infile.getline(s, 5);
infile.getline(s, 5);
我使用字符数组“s”将整行的前5个字符复制到它。当调用getline()时,读取器将加载所有行,因此无论您读取了多少行,都将跳过所有行。 并确保声明了,以便可以使用getline函数

#include <string.h>
#包括

请告诉我,如果我帮助了你。

问题,除了数据文件解析和丢失的半冒号之外,是Print。“d”是int的格式代码,但是你正在传递一个双。你需要使用“g”。或者更好的是,STD C++流。< /P> 如果打开警告,GCC将告诉您这一点。通常,使用“-Wall-Wextra”,或者在特定情况下使用“-Wformat”。

修复如下:-

i_max = 4; //this is no. of rows  
j_max = 7; // this is no. of cols 

std::string dummy;
getline(infile,dummy); //Skip 1st line "Object data"
getline(infile,dummy); //Skip 2nd line "Format 6"

double data [i_max][j_max];
for (i=0; i<i_max; i++) {
    for (j=0; j<j_max; j++) {
        infile >> data[i][j];
        // Use %f format specifier for floats
            printf ("%f\n", data[i][j]);  
    }
}
i_max=4;//这是行数
j_max=7;//这是列数
字符串伪码;
getline(填充,虚拟);//跳过第1行“对象数据”
getline(填充,虚拟);//跳过第二行“格式6”
双数据[i_max][j_max];
对于(i=0;i数据[i][j];
//对浮动使用%f格式说明符
printf(“%f\n”,数据[i][j]);
}
}

另外,请不要混合使用C&C++

为什么它需要一个
#include
?为什么在
s
中只读取5个字符?另外,我建议您在文件的前两行没有丢失的地方发布替代代码,并指定
s
的数据类型。是的,当然。我正在移动中…s具有char数据类型。更明确地说t:我用它把整行的前5个字符复制到它上面读者加载了所有的行,所以不管你读了多少行,都会被跳过。不过,为什么
#include
?还要看看答案,看看你的差距。是的,他打断了我的想法。但无论如何,谢谢你,你不认识我,我不认识你,我们不要谈论我或你的差距!也许问这个问题的人想解决这个问题Raluca的问题,而不是C++,你不觉得吗?谢谢你的帮助,我应该更清楚地知道我在C++中工作。谢谢你的帮助。你能指出我是如何混合C和C++的吗?谢谢你给我提示把警告当作一个额外的调试功能。