簡體   English   中英

使用 getline() 從文件中讀取輸入(帶空格)到一個結構中

[英]Using getline() to read input (with spaces) from file into a structure

我目前在 C++ 數據結構類中,我對 C++ 非常陌生。 我的目標是從文件中讀取行並將它們存儲到結構中。 這些行包含一本書的元素。 我的問題是有些行有空格,我不確定如何正確地將它們讀入結構中。 我似乎無法正確使用getline()將行讀入結構的每個元素。 如果我按原樣運行它,我會收到消息error: expected primary expression before 'infile' 如果這篇文章的格式不正確,請道歉,這也是我的第一篇堆棧溢出文章! 有什么幫助嗎??

這是我的結構的樣子:

typedef struct book {
    char title[100];
    char author[100];
    char publisher[100];
    float price;
    char isbn[100];
    int pages;
    int copies;
} Book;

這就是我試圖將行讀入結構的方式:

for (int i=0; i < currentIndex; i++) {
    getline(ifstream infile, my_book[i].title);
    getline(ifstream infile, my_book[i].author);
    getline(ifstream infile, my_book[i].publisher);
    getline(ifstream infile, my_book[i].price);
    getline(ifstream infile, my_book[i].isbn);
    getline(ifstream infile, my_book[i].pages);
    getline(ifstream infile, my_book[i].copies);
    currentIndex++;
}

文本文件將列出書籍信息,如下所示:

Magician: Apprentice
Raymond E. Feist
Spectra (January 1, 1994)
5.02
0553564943
512
1

1 - 首先在 for 循環之外聲明 infile 然后使用它。

2 - getline(infile, book[i]....) 不是 infile.getline(book[i]... , size,..) 第一個用於類字符串,第二個用於字符數組.

所以你的程序可能看起來像:

ifstream infile("data.txt", ios::in); // your data file

for (int i=0; i < currentIndex; i++)
{
       infile.getline(my_book[i].title    , 100, '\n');
       infile.getline(my_book[i].author   , 100, '\n');
       infile.getline(my_book[i].publisher, 100, '\n');
       infile >> my_book[i].price;
       infile.getline(my_book[i].isbn     , 100, '\n');
       infile >> my_book[i].pages;
       infile >> my_book[i].copies;
       currentIndex++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM