从输入文件到数组的混乱读取
messy reading from input file into array
我已经在这方面工作了很长时间,所以我认为是时候问一个问题了,因为我不知道发生了什么。无论出于什么原因,在这个循环中,它只在第一次正常工作,然后返回到文件的开头,重新开始从头开始读取。谢谢
void readGasFile(int numTherms, int arrSize, string fileName, Customer cArray[])
{
cout << "reading gas file";
int i;
string temp;
int temp2;
ifstream inputFile;
inputFile.open(fileName.c_str());
if (inputFile.is_open())
{
cout << "reading input file";
string dummyLine;
getline(inputFile, dummyLine);
//ignore first line
/* *****************************************
format:
1212 <--- account number
Lance, Ahmed
1200 1212 <----- previous, current therms meter readings
2323 <----- gas therms used
******************************************/
for(i=0; i<arrSize; ++i)
{
cout << "start loop" << i << endl;
inputFile >> temp2;
cArray[i].setNumber(temp2);
cout << temp2 << endl;;
inputFile >> temp;
cArray[i].setLastName(temp);
inputFile >> temp;
cArray[i].setFirstName(temp);
inputFile >> temp2;
cArray[i].setPrevious(temp2);
inputFile >> temp2;
cArray[i].setCurrent(temp2);
inputFile >> temp2;
cArray[i].setTherms(temp2);
}
}
return;
}
根据代码,如果看不到确切的输入,就无法判断,但我敢打赌,阅读在某种程度上确实失败了。由于你没有像往常一样检查你的输入,你的程序没有注意到这一点。作为一个侧节点,你读取的名称包括逗号,这可能也是不可取的。以下是我如何编写循环:
for(i = 0; i != arrSize
&& inFile >> number
&& std::getline(inFile, lastName, ',')
&& std::getline(inFile, firstName)
&& inFile >> previous
&& inFile >> current
&& inFile >> therms; ++i) {
// set the various values
}
显然,需要适当地声明各种变量。实际上,我可能会考虑编写一个输入运算符。如果你发现你什么都读不懂,你需要找出输入哪里出了问题,例如,通过输出你在每个子表达式后成功读取了值,例如:
for(i = 0; i != arrSize
&& inFile >> number && std::cout << "number=" << number << 'n'
&& std::getline(inFile, lastName, ',') && std::cout << "name='" << lastName << "'n"
&& std::getline(inFile, firstName) && std::cout "first-name='" << firstName << 'n'
&& inFile >> previous && std::cout << "previous=" << previous << 'n'
&& inFile >> current && std::cout << "current=" << current << 'n'
&& inFile >> therms && std::cout << "therms=" << therms << 'n'; ++i) {
// set the various values
}
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何克服提升精神AST混乱
- 如何在c++中从文本文件中逐行读取整数
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 独立读取-修改-写入顺序
- 使用 C++ 从 Linux 串行端口读取会提供混乱的数据
- 从输入文件到数组的混乱读取
- c++读取文本文件并输出等级和平均值到另一个文件(输出混乱)