将FILE*读入课堂

-2 c class file

我试图读取文本文件中的条目并将其放入类中.文本文件的结构如下:

ABCD
3.00
2
6.00
-
Run Code Online (Sandbox Code Playgroud)

进入一个班级:

typedef struct item
{
    char        *name;
    double      uprc;
    double      cost;
    int         qty;
} item;
Run Code Online (Sandbox Code Playgroud)

"ABCD"是名称,3.00是uprc,2是qty和6.00 cost.

我该如何实现呢?到目前为止,我有:

void read()
{
    item i;
    FILE *f = fopen(PATH, "r");
    char *buf;
    int c, nl_ct = 0;
    while((c = getch(f)) != EOF){
        putchar(c);
        if(c == '\n'){
            nl_ct++;
            switch(nl_ct){
            case 1:
                {
                    char *buf;
                    while(fgets(buf, sizeof(buf), f))

                }
                break;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道在最里面的while循环中该做什么.此外,此代码看起来不正确.

我该如何编码呢?

dre*_*lax 5

如果您只使用C++提供的工具,这会变得更加简单.

鉴于:

class item
{
public:
    std::string name;
    double uprc;
    double cost;
    int qty;
};
Run Code Online (Sandbox Code Playgroud)

你可以做(​​包括<string>,<fstream>和之后<iostream>):

std::ifstream input(PATH);
item i;

std::getline(input, i.name); 
input >> i.uprc;
input >> i.qty;
input >> i.cost;
Run Code Online (Sandbox Code Playgroud)

使用的原因std::getline是读取整行,如果你这样做,input >> i.name;它只会读到第一个空白字符,所以它不适用于带空格的名字.

或者,您可以提供自己的,operator>>以便您可以做到input >> i;.另请注意,此处未进行错误检查,因此您需要自行添加.