【发布时间】:2020-04-19 16:46:36
【问题描述】:
我遇到的问题是我应该从我的 .txt 文件中读取值 7 write 0x01 0x27 并且循环只会运行 1 次,给出输出 0 - 7 1 0x01 0x27 (1 代表写入,0 = 读取, 2 = 未设置),但是,我用 print 语句打印出来的值显示为
0 - 7 1 0x30 0x78
1 - 1 2 0x00 0x00 //where the 2 is it reads in 0x27 as a string
所以,我试图弄清楚为什么它会读取额外的值,而不仅仅是文件中的值。
void ioLoad(char* name)
{
std::ifstream inF;
inF.open(name, ios_base::in);
int i = 0;
string rw;
while(!inF.eof()){
inF >> var.time[i]; //int time, from struct 'var'
inF >> rw; //string rw, should read either read or write
inF >> std::hex >> var.address[i] //unsigned char address, from struct 'var' >>PROBLEM LINE<<
if (rw == "write")
{
var.state[i] = WRITE; //stores an enum value as the state
inF >> std::hex >> var.value[i]; //unsigned char value, from struct 'var' >>PROBLEM LINE<<
}
printf("%d - %d %d 0x%02X 0x%02X\n", i, var.time[i], var.state[i], var.address[i], var.value[i]);
i++
}
inF.close()
}
任何帮助将不胜感激,如果您需要更多信息,请告诉我。
【问题讨论】:
-
inF.eof()如果最后一次读取操作到达文件末尾,则返回 true,而不是当前读取位置是否在文件末尾。 -
请在minimal reproducible example发布实际代码。发布的代码与预期的输出格式不对应。