尝试使用ifstream时抛出异常

时间:2017-05-16 19:25:18

标签: exception visual-c++ ifstream c++17

我正在尝试将文本文件中的行放入string的数组中,但是我得到一个异常抛出,坦率地说,我对于我应该做什么一无所知。

以下是处理文件的代码:

ifstream names("Vehicle_names.txt");
    string vehnames[54];
    if (names.bad())
    {
        return 1;
    }
    while (names)
    {
        names >> vehnames[i++];
    }
    i = 0;
    while (i < 54)
    {
        cout << endl << vehnames[i];
        i++;
    }

在iosfwd中的以下行旁边抛出异常:

static void __CLRCALL_OR_CDECL assign(_Elem& _Left, const _Elem& _Right) _NOEXCEPT
        {   // assign an element
        _Left = _Right;
        }

错误说:

Excpetion thrown: write access violation
_Left was 0xCCCCCCCC.

如果你可以帮我解决这个问题,我真的很感激,我很想尝试做点什么。

如果有帮助,我正在使用Visual Studio 2017编写。

1 个答案:

答案 0 :(得分:0)

首先,看起来您使用 i 而未声明 i 。接下来,确保 i 没有指向没有找到任何内容的地方。也许尝试这样的事情......

ifstream names("Vehicle_names.txt"); 
int i = 0;
string vehnames[1028]; //ensure there is enough memory allocated to store txt file in string array
if (names.bad())
  return 1;
while (names.good())
      names >> vehnames[i++]; 
int j = 0;
while(j<i)
    cout << vehnames[j++] << endl;
return 0;

虽然,解决方案并不重要。尝试了解代码的工作原理。 ...并坚持下去!