尝试使用文本文件初始化多个Struct变量

时间:2018-02-02 02:07:16

标签: c++ struct

这个问题的措辞可能很差,但我可以在这里做得更好。基本上,我已经初始化了结构和需要使用它的5个变量。这一切都顺利完成,问题来自于需要使用文本文档来设置每个结构的值。我需要一次性分配所有5个,因为数据来自文本文件。要初始化其中一个变量,代码看起来像这样;

int main(void){
    ifstream inputFile;
    ofstream outputFile;
    char input[10];
    char output[10];
    cout << "Enter Input File: ";
    cin >> input;
    cout << "Enter Output File: ";
    cin >> output;
    inputFile.open(input);
    outputFile.open(output);

struct Rental{
    int year;
    char make[10];
    char model[10];
    float price;
    bool available;
};

Rental Car1, Car2, Car3, Car4, Car5;

    inputFile >> Car1.make;
    inputFile >> Car1.model;
    inputFile >> Car1.price;
    inputFile >> Car1.available;

我需要找到一种方法来替换所有五个Car1(它是一个结构变量),以便文本文档可以继续扫描。反正只是替换结构的Car1部分?任何帮助表示赞赏!

编辑: 我忘了添加我的限制,无法使用字符串库。

1 个答案:

答案 0 :(得分:1)

为istream重载std::istream& operator >>(std::istream &inputFile, Rental& car) { inputFile >> car.make; inputFile >> car.model; inputFile >> car.price; inputFile >> car.available; return inputFile; } 运算符

int main () {
    ifstream inputFile;
    ofstream outputFile;
    char input[10];
    char output[10];
    cout << "Enter Input File: ";
    cin >> input;
    cout << "Enter Output File: ";
    cin >> output;
    inputFile.open(input);
    outputFile.open(output);

    Rental Car1, Car2, Car3, Car4, Car5;

    inputFile >> Car1 >> Car2 >> Car3 >> Car4 >> Car5;

    inputFile.close()

    ...

}

现在在main中,您可以这样做:

std::istream

使用任何std::cin对象时都应该这样做,这意味着包括{{#each data }} {{> partial parameter=somethingFromThisContext }} {{/each}}