你在C++中,所以不要使用scanf
,std::ifstream
而是更喜欢。
#include <fstream>
using namespace std;
ifstream file("input.txt");
int x, y, z;
float eta, phi;
// Read you file until the end
while( file >> x >> y >> z >> eta >> phi )
{
// Print the values
cout << "x : " << x << " y :" << y << " z : " << z << " eta : " << eta << " phi : " << phi << endl;
}
正如 Armen Tsirunyan 所示,您还可以使用 astruct
来存储带有 a 的数据vector
。这取决于您想对数据做什么。
结构的优点是您有一个实体,表示与所有数据一致。并且您可以重载 anoperator>>
以使用更清晰的代码读取文件。
代码将如下所示:
#include <fstream>
#include <vector>
using namespace std;
struct s_Data
{
int x, y, z;
float eta, phi;
};
istream& operator >> (istream& iIn, s_Data& iData)
{
return iIn >> iData.x >> iData.y >> iData.z >> iData.eta >> iData.phi;
}
ifstream file("input.txt");
// Read you file until the end
s_Data data;
vector<s_Data> datas;
while( file >> data )
{
// Print the values
cout << "x : " << data.x << " y :" << data.y << " z : " << data.z << " eta : " << data.eta << " phi : " << data.phi << endl;
// Store the values
datas.push_back( data );
}
这里s_Data
用你想要的 5 个值表示你的 lign。vector<s_Data>
代表文件中读取的所有值。您可以通过以下方式阅读它:
unsigned int size = datas.size();
for ( unsigned int i = 0; i < size; i++ )
cout << datas[i].x; // read all the x values for example