从文件中获取输入并将其保存到临时内存中
takin input from a file and saving it into temporary memory?
我有一个结构化数组,它最初是空的,有4种数据类型,分别为ng、string、2个int和1个float。我有一个dvd标题和其他属性的列表(3个其他,其中2个是int,最后一个是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
的返回是从中读取的流,而不是从中读取数据的字符串。
您还将重复地将数据读取到同一个位置(line
),而不将其保存在任何位置。
你的循环有缺陷(while (!somefile.eof())
基本上总是坏掉的)。
您通常想要的是从重载operator>>
开始,从流中读取单个逻辑项,然后使用它来填充这些项的向量。
// 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>());
您应该这样构建它:
std::ifstream myfile("filename.dat");
std::string line;
while (getline(myfile, line))
{
// you can use std::string::find(), std::string::at(), std::string::substr
// to split the line into the necessary pieces
}
然后,您可以使用Jerry coffins答案将每个片段保存在vector<item>
中。
相关文章:
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 是否可以通过每次在内存中仅保存一个平铺来处理完整的平铺 tiff 图像?
- 如何从文件中读取 100x24 矩阵并将其作为浮点矩阵保存在内存中?
- 如果我不将预先编写的字符串保存到变量,它还在内存中吗?
- 将内存保存到文件并加载它而不必解析数据?
- 声明变量以保存字符串列表时的内存分配
- 我的共享内存对象保存在哪里
- 在多次运行C++程序时将巨大的矩阵保存在内存中
- 在编译时检查特征类型保存的数据在内存中是否连续
- 局部变量保存相同的内存地址
- 读取.txt文件保存在内存中
- 保存未知数量的整数,而不会花费太多时间/内存
- 将它们(函数)保存在内存中的同一位置
- 什么设计模式将数据部分保存在持久存储 (SQL) 中,部分保存在 RAM(内存)中
- 将图像保存到内存
- GDI - 是否可以在WM_PAINT调用之间将位图保存在内存中
- C++ 如何将内存中的文件流保存到另一个位置
- 使用位字段保存内存
- 将Mat压缩到Jpeg中,并将结果保存到内存中
- WinBio保存捕获样本为图像-无法从内存中读取