c++ - 从文件中获取输入并将其保存到临时内存中?

标签 c++ file

我有一个结构化数组,它最初是空的,有 4 种数据类型,字符串、2 个整数和 1 个 float 。我有一个保存在文本文件中的 DVD 标题和其他属性列表(另外 3 个,其中 2 个是整数,最后一个是 float 的),我需要将文本文件中的数据输入到我的结构中。这是我的代码,但似乎无法正常工作?

        do
        {
           for(int i=0;i<MAX_BOOKS;i++)
           {

                tempTitle= getline(myfile,line);
                temChapters = getline(myfile,line);
                tempReview = getline(myfile,line);
                tempPrice = getline(myfile,line);
           }
        }while(!myfile.eof());

最佳答案

getline 的返回是您从中读取的流,而不是您将数据读入的字符串。

您还会反复将数据读入同一位置(),而不会将其保存在任何地方。

你的循环有缺陷(while (!somefile.eof()) 本质上总是坏的)。

您通常想要的是从重载 operator>> 开始,以从流中读取单个逻辑项,然后使用它来填充这些项的 vector 。

// The structure of a single item:
struct item { 
    std::string title;
    int chapters;
    int review;
    int price;    
};

// read one item from a stream:
std::istream &operator>>(std::istream &is, item &i) { 
    std::getline(is, i.title);
    is >> i.chapters >> i.review >> i.price;
    is.ignore(4096, '\n'); // ignore through end of line.
    return is;
}

// create a vector of items from a stream of items:
std::vector<item> items((std::istream_iterator<item>(myfile)), 
                         std::istream_iterator<item>());

关于c++ - 从文件中获取输入并将其保存到临时内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844473/

相关文章:

c++ - 如何使用 std::signaling_nan?

Java OutputStream 到多个文件

bash - 如何从 shell 脚本创建和访问 shell 配置文件?

file - 戈朗 : write []int to file

c++ - 如何确定字符串是否为 C++ 中的数字?

c++ - 继承 : Selecting which base class methods to inherit

c++ - 如何制作可变深度的嵌套 map

c - 使用链表的航空公司预订系统

java - Java中的文件复制

c++ - 我可以用三元初始化一个 char[] 吗?