我想读取一个字符串行的行下来.txt文件,以便启动一个使用构造函数,需要一个字符串的对象数组。阅读输入构建一个对象
文本文件是这样写
TransAm
Mustang
Corvette
我觉得我的循环不迭代的信息我想正确设置。有没有简单的方法来完成这个? main.cc
#include <string>
#include <iostream>
#include "Car.cc"
#include <fstream>
using namespace std;
int main()
{
Car cars[3];
string STRING;
ifstream infile;
infile.open("cars.txt");
// THIS IS HOW IT'S ACHIEVED USING FOR-LOOP - Sam
for(int i = 0; i<3 && infile;++i){
getline(infile,STRING);
cars[i].setName(STRING);
}
/* THIS IS WHAT I HAD
while(!infile)
{
getline(infile,STRING);
for(int i = 0; i<sizeof(cars);i++){
cars[i].setName(STRING);
}
}
*/
infile.close();
for(int j = 0;j<sizeof(cars);j++){
cars[j].print();
}
}
Car.h
#include <string>
using namespace std;
class Car{
public:
Car();
Car(string);
string getName();
void setName(string);
void print();
private:
string name;
};
Car.cc
#include <string>
#include "Car.h"
using namespace std;
Car::Car()
{
}
Car::Car(string s)
{
setName(s);
}
void Car::setName(string s)
{
name = s;
}
string Car::getName()
{
return name;
}
void Car::print()
{
cout << name;
}
'而(!INFILE)'我觉得你的循环就什么都没有。 – Blacktempel
将'while(!infile)'改为'while(getline(infile,STRING))' –
我试着一段时间循环但结果无法读取并设置“Trans-Am” 'while while(infile) \t { \t \t对(INT I = 0; I <3 && infile中; ++ⅰ){ \t \t \t函数getline(infile中,STRING); \t \t \t cars [i] .setName(STRING); \t \t} \t}' – Genesis