【发布时间】:2015-11-22 05:58:23
【问题描述】:
我有一个包含食物详情的文件 (Existingfile.txt),如下所示:
- 意大利面 1.99
- 芝士蛋糕4.99
等等。我必须编写一个读取这些记录的 c++ 程序。我可以创建如下结构来读取单个结构的记录吗?
struct food
{
int no;
string name;
float cost;
}s;
//TO read from file
void read(){
fstream f;
f.open("Existingfile.txt",ios::in);
while(!f.eof()){
f.read((char*)&s,sizeof(s));
.
.
.
}
.
.
.
f.close();
}
P.S:我是 stackoverflow 的新手。如果我的问题不正确,请发表评论,我会清除它。各位,我需要你们的帮助!
【问题讨论】:
-
是的,这是可能的,但不能直接进入您的结构。您可以将其读入字符串字节解析,这对于这种格式并不特别容易。也许
fscanf可以帮助你。你的文件格式是灵活的还是给定的? -
简单的答案是否定的,不是我认为你的意思。一个问题是您的模式(例如它)是:1)作为整数的索引 2)句点 3)一系列以价格结尾的空白分隔词 4)价格。但是您拥有的结构没有那么多信息。例如,结构无法“知道”价格“10.99”的第一个字符不是价格之前的字符串的一部分。您需要编写一些简单的解析代码。
-
@CompuChip 我在文件格式上有灵活性。它没有给出。
-
@user2460798 我可以更改文件以删除句点。至于食物的名称,我可以在末尾添加'\0',这样字符串在遇到'\0'时就会终止。那有可能吗?
标签: c++ file-handling