我有一个文件(Existingfile.txt),其中包含食物项目的详细信息,如下所示:
等等。我必须编写一个读取这些记录的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的新手。如果我的问题不正确,请发表评论,我会清除它。拜托,伙计们,我需要你的帮助!
答案 0 :(得分:0)
你可以,但是如果你使用这样的文本因为格式化它会非常复杂。简单的方法是使用分隔符,因此可以通过分隔符(例如空格)进行分割。例如简单的文字:
1;Pasta;300
2;Chess cake;400
您可以按;
字符拆分它。或者,如果您使用空格作为分隔符,那么您可以使用输入流。
instream >> num >> food >> total;
但您的文字除分隔符外不得包含空格。
答案 1 :(得分:0)
您是否尝试过编译? 如果结构的所有元素都是固定大小的c样式字符串,并且如果输入行的长度是固定的,那么它可以起作用。
然而,你不能这样读,因为元素基本上不是字符。例如,成本是一个浮动。如果您阅读'19 .99'。它只是一个字符串“19.99,而不是浮动值19.99。
我建议您读取一行,将其保存到字符串缓冲区,然后您可以编写代码来解析信息。或者只使用fscanf
答案 2 :(得分:0)
答案 3 :(得分:0)
ifstream ob("text.txt")
string record ;
string temp ;
while(getline(ob, record))
{
stringstream ss(record);
ss>>s.no>>s.cost ;
}