c++ - 从文件 C++ 读取奇怪的整数

标签 c++ arrays file-io

真的试着环顾四周,使用搜索。使用谷歌,尝试了很多方法,但我无法弄清楚。 (而且我想对于任何“能说流利的 C++”的人来说,这真的很容易。)

这是一个非常简单的作业,但我不知道为什么会这样。
这是代码:

int temp;
string fname;
cout << "Kerem a fajlnevet: ";
cin >> fname;`

ifstream f;
f.open(fname.c_str());

int szam_madar, szam_helyseg;

f >> szam_madar;
f >> szam_helyseg;

int matrix[szam_helyseg * szam_madar];
for (int i = 1; i <= szam_helyseg; i++)
    {
        for(int j=1; j <= szam_madar; j++)
        {
            f >> matrix[i*szam_madar + j];
        }
    }

maximalisHelyseg(matrix,szam_helyseg,szam_madar);`

以及我在阅读时使用的文本:
5 5 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1

应该创建一个 5x5 数组,然后按顺序填充它。
现在……结果大不一样了。
对于前几个数组成员,它给出类似 2686048、4686232 等的内容。

最佳答案

你有这样的东西:

for (int i=1; i <= szam_helyseg; i++)
{
    for(int j=1; j <= szam_madar; j++)
    {
        f >> matrix[i*szam_madar + j];
    }
}

但是数组索引从 0 开始计数,所以最简单的方法是

for (int i=0; i < szam_helyseg; i++)
{
    for(int j=0; j < szam_madar; j++)
    {
        f >> matrix[i*szam_madar + j];
    }
}

等您可以看到,在初始迭代中,计算的索引为 0,而在原始迭代中,它从 szam_madar + 1 开始。 (这是出现问题的迹象)。

另外,可变长度数组不是标准的 C++(引用 int matrix[szam_helyseg * szam_madar]; 行)。使用数组 new运算符,或(更好)一个 vector<int> .

关于c++ - 从文件 C++ 读取奇怪的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431332/

相关文章:

c++ - 使用 C++ 的文件 I/O 同时打开两个文件

C++ 等效于 C# object 关键字

c++ - 创建 HWND 的最简单方法

c++ - 如何用 Cython 包装 C++ 类?

c++ - 如何在 CMake 中添加 "-l"(ell) 编译器标志

php - 比较 2 个 json 字符串以查找新条目

arrays - 在 C 中创建一个函数来返回一个 int 数组的长度

mysql - 如何将非 select mysql 语句的结果放入 OUTFILE?

c# - 如何使用 SaveFileDialog 将字节数组写入文件?

java - 如何从文件中一一读取整数和字符?