2

我正在尝试将包含 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();

但是,当我运行此代码时,会执行循环,但不会将任何内容读入数组。我哪里出错了?

4

2 回答 2

6

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

i < monsters->size()

这实际上会在数组中的第一个字符串上调用 size(),因为它位于第一个索引处。(monsters 等价于 monsters[0]) 因为默认为空,所以返回 0,循环永远不会运行。

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

i < 20
于 2012-05-01T11:20:00.090 回答
3

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();
于 2012-05-01T11:21:58.297 回答