gpt4 book ai didi

c++ - 从文件中读取链表的输入和写入输出

转载 作者:行者123 更新时间:2023-11-28 06:52:35 25 4
gpt4 key购买 nike

我正在处理混合类型的数字和字符串,所以我真的不知道该怎么做,除了像

这样简单的事情
ifstream fin(filename);
fin >> a;
ofstream fout(filename);
fout << b;

这是我必须处理的结构

struct Reservation
{
int ID;
char name[MAX_NAME_LENGTH];
char phone[MAX_PHONE_LENGTH];
int gridironID;
char hireDate[MAX_DATE_LENGTH];
char resDate[MAX_DATE_LENGTH];
char startTime[MAX_TIME_LENGTH];
char endTime[MAX_TIME_LENGTH];
bool isPay;

Reservation *nextReservation;
};

我真的需要一些指导或指示来启动它,也许需要我应该使用的特定类型的函数或运算符?

编辑:啊,是的,我希望输出看起来像这样

100001,khang,01283478233,1,1,1,1,1,1

整个思路就是在运行程序的时候从一开始就读取一个文件的信息,这样就可以创建一个基础资源来与之交互,一切都完成后,你想打印出基础中的信息下次再次启动该程序时的资源。

最佳答案

没有关于实际数据的一些信息字符串,这很难说,但基本上,你需要定义功能:

std::ostream& operator<<( std::ostream& dest, Reservation const& source )
std::istream& operator>>( std::ostream& source, Reservation& dest );

你放入函数中的内容在一定程度上取决于你拥有的数据处理;你的第一步应该是准确定义什么你希望每条记录看起来像,记住它必须输入明确。 (例如,如果您只使用白色空格作为分隔符,如果有任何一个,你会遇到问题字符串可以包含空格——名称通常可以。)

输出目标格式相对简单:你输出每个字段,带有必要的分隔符等,在经典方式。输入比较复杂,因为你需要验证所需的分隔符是否实际存在;如果最坏的情况是最坏的情况,您甚至可能不得不通过以下方式阅读角色字符,例如如果您想为名称使用带引号的字符串:

std::string name;       //  Where we'll put the results;
source >> std::skipws; // Skip any leading white space
char ch;
if ( !source.get() || ch != '"' ) {
source.setstate( std::ios_base::failbit );
}
while ( source.get( ch ) && ch != '"' ) {
name += ch;
}
if ( ch != '"' ) {
source.setstate( std::ios_base::failbit );
}

您可能想要添加代码来处理转义字符循环,或禁止其他字符,如输入中的 '\n'。这在循环中很容易做到。只要记住,任何时候你看到任何你不喜欢的东西:设置 std::ios_base::failbit。除了告诉来电者出了点问题,所有以下输入将立即失败,无需提取流中的任何内容。

关于c++ - 从文件中读取链表的输入和写入输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23660574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com