C++ 从文件中读取成对的数据
我正在尝试使用以下代码从文件中读取成对的数据C++ 从文件中读取成对的数据,c++,vector,std-pair,C++,Vector,Std Pair,我正在尝试使用以下代码从文件中读取成对的数据 #include <iostream> #include <fstream> #include <vector> using namespace std; int main() { //**** Opening data file **** ifstream infile; infile.open("reg_data_log.inp"); if (infile.is_open
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
//**** Opening data file ****
ifstream infile;
infile.open("reg_data_log.inp");
if (infile.is_open())
{
cout << "File successfully open" << endl;
}
else
{
cout << "Error opening file";
}
//**** Reading data ***
vector<pair<double, double> > proteins;
pair<double, double> input;
while (infile >> input.first >> input.second)
{
proteins.push_back(input);
}
//**** Show data in screen ****
cout << "Proteins analized: " << proteins.size() << endl;
for(unsigned int i=0; i<proteins.size(); i++)
{
cout << i.first << ", " << i.second << endl;
}
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
//****正在打开数据文件****
河流充填;
填充打开(“reg_data_log.inp”);
if(infle.is_open())
{
cout>输入(秒)
{
蛋白质。推回(输入);
}
//****在屏幕上显示数据****
不能进一步观察你的循环吗
for(unsigned int i=0; i<proteins.size(); i++)
{
cout << i.first << ", " << i.second << endl;
}
现在,您得到的是向量中的元素,而不是整数。您现在可以访问第一个
和第二个
如果不能使用基于范围的for循环和auto
,则可以使用旧的迭代器for循环方式
for(vector<pair<double, double> >::iterator it = proteins.begin();
it != proteins.end();
++it)
{
cout << it->first << ", " << it->second << endl;
}
for(vector::iterator it=proteins.begin();
它!=蛋白质。结束();
++(it)
{
cout first正如他在评论中所提到的,实际上您引用的是int而不是pair类型。下面的循环很可能会解决您的问题:
cout << "Proteins analized: " << proteins.size() << endl;
for(unsigned int i=0; i<proteins.size(); i++)
{
cout << proteins[i].first << ", " << proteins[i].second << endl;
}
cout错误很明显。你在最后一个循环中使用i
。它是一个int
。但是你尝试先访问i.first
。你需要使用迭代器。例如:for(auto i:proteins){迭代器能否给我一个编译器错误63:7:警告:“auto”改变了C++11中的含义;请删除它[-Wc++0x]@berkboy您使用的是c++11之前的编译器吗?re.“自动”更改的意思是:升级您的编译器或使用编译标志(如果版本非常旧,则可能是-std=c++0x
)。谢谢您的解释。我看到了我的错误。
cout << "Proteins analized: " << proteins.size() << endl;
for(unsigned int i=0; i<proteins.size(); i++)
{
cout << proteins[i].first << ", " << proteins[i].second << endl;
}