0

我刚刚开始使用 Visual C++ 并尝试从字符串数组中的 .csv 文件导入数据。我知道其他人已经问过这个问题,但我的问题是我的程序甚至没有读取该位置的文件。我尝试按照本网站代码中的线索进行操作,但无济于事。我确定这是一个愚蠢的问题,但我是该语言的新手。代码和输出如下。你认为是什么问题?如果你们需要 csv 文件,请告诉我,我愿意通过您的电子邮件转发给您。:

// New_work.cpp : 定义控制台应用程序的入口点。//

  #include "stdafx.h" 

   #include <iostream>

   #include <string>

   #include <fstream>

   using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int i, j;

    string VolsCorrs[50][20];

    ifstream reader;
    reader.open("C:\C++_Programs\EaR_20130719_VolsCorrs_V5.csv");

    if (!reader)
    {
        cout << "Error opening input file" << endl;
        cin.get();
        return -1;
    }

    for(i=0; i<50; i++)
    {
        for(j=0; j<22; j++)
        {
            getline(reader, VolsCorrs[i][j], ',');
        }
    }

    reader.close();

    cout << "Volatility and Correlation input" << VolsCorrs << endl;

    cin.get();
    return 0;
}

输出:

'New_work.exe': Loaded 'C:\C++_Programs\New_work\Debug\New_work.exe', Symbols loaded.
'New_work.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'New_work.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'New_work.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'New_work.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded (source information stripped).
'New_work.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded (source information stripped).
The program '[15844] New_work.exe: Native' has exited with code -1 (0xffffffff).
4

1 回答 1

0

当然,一个问题是您的数组的尺寸为 50x20,并且在嵌套的 for 循环中,由于j<22条件的原因,您正在访问索引 [i][20] 和 [i][21]。这些超出了数组的边界,因此会导致内存违规。

于 2013-08-04T13:25:36.983 回答