C ++将文本文件读入数组

时间:2012-05-01 11:14:37

标签: c++ arrays file-io

我正在尝试将包含20个名称的文本文件读入字符串数组,然后将每个字符串打印到屏幕上。

string monsters[20];
ifstream inData;
inData.open("names.txt");
for (int i=0;i<monsters->size();i++){
    inData >> monsters[i];
    cout << monsters[i] << endl;
}inData.close();

然而,当我运行此代码时,循环被执行但没有任何内容被读入数组。我哪里出错?

2 个答案:

答案 0 :(得分:6)

您的for循环终止条件错误:

i < monsters->size()

这实际上会调用数组中第一个字符串的size(),因为它位于第一个索引处。 (怪物等同于怪物[0])因为默认情况下它是空的,它返回0,循环永远不会运行。

请记住,C ++没有数组的size()运算符。您应该使用常数20作为终止条件。

i < 20

答案 1 :(得分:2)

运行时

monsters->size()0。将该行更改为for (int i=0;i<20;i++)

 string monsters[20];
    ifstream inData;
    inData.open("names.txt");
    for (int i=0;i<20;i++){
        inData >> monsters[i];
        cout << monsters[i] << endl;
    }inData.close();