为什么c++ io流的循环在第一次迭代后中断
Why does the loop with C++ io streams break after first iteration?
这是我到目前为止的代码。我从一个输入文件得到我的数据。这个文件有我调用的每个变量所需的所有数据,但是当我运行它时,我只得到一次迭代,然后它退出循环。我需要它运行到文件的末尾。
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
int main ()
{
ifstream pTemp("PlanetCelsius.dat");
int pNumber, pSize;
string pName;
double cTemp, fTemp;
cout << "Numbert" << "Planet Namet" << "Diametert" << "Celsiust" << "Fahrenheit" << endl;
while (pTemp >> pNumber)
{
while (pTemp >> pName)
{
while (pTemp >> pSize)
{
while (pTemp >> cTemp)
{
pTemp >> pNumber;
cout << pNumber << " ";
}
pTemp >> pName;
cout << pName << " ";
}
pTemp >> pSize;
cout << pSize << " ";
}
pTemp >> cTemp;
fTemp = 9 * (cTemp) / 5 + 32;
cout << cTemp << " " << fTemp << endl;
}
system ("PAUSE");
return 0;
}
while (cin.good)
{
pTemp >> pNumber >> pName >> pSize >> cTemp >> pNumber;
cout << pNumber << " " << pName << " " << pSize << " ";
fTemp = 9 * (cTemp) / 5 + 32;
cout << cTemp << " " << fTemp << endl;
}
return 0;
我还没有看到你的文件结构,但我想这个代码片段可以工作。
你在做:
while(there's a number)
while(there's a string)
while(there's a number)
while(there's a number)
take first number
take first string
take first number
take first number
,你的程序在最内层的while循环中获取所有可能的数字,这会扰乱你的number-string-number-number序列。
当第一个while循环第二次检查时,它找不到一个数字,因为最里面的循环已经取出了第一个字符串之前的所有数字,它退出了。
使用while()s是一个糟糕的选择,请尝试按照spin_eight建议的方式解析文件。
相关文章:
- 在一次迭代中从 txt 文件中读取多行
- 高级选择排序 - 在一次迭代中搜索两个元素
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 是什么导致我的循环在第一次迭代中运行得更慢
- 为什么第一次迭代后的指针指向随机值?
- LAPACK函数在第一次迭代后变慢
- 为什么如果(!(cin >> int)) 在第一次迭代中接受十进制数,但不接受其他十进制数?
- C++ for 循环未正确交互.它在第一次迭代时停止
- C++初学者-当循环重复第一次迭代时
- OpenCV 矩阵和 FileNodeIterator:选择第一次迭代
- 此循环仅适用于第一次迭代
- C++ 笛卡尔乘积迭代器在第一次迭代时调用基类函数
- cin.getline() 跳过第一次迭代
- 为什么这个循环在第一次迭代时中断
- Cin未能在循环的第一次迭代后执行
- openCV grabcut GC_INIT_WITH_MASK第一次迭代
- 如何跳过基于范围的for循环的第一次迭代
- 为什么c++ io流的循环在第一次迭代后中断
- c++验证函数循环在第一次迭代后返回相同的结果