我正在尝试将包含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();
然而,当我运行此代码时,循环被执行但没有任何内容被读入数组。我哪里出错?
答案 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();