我需要在c ++中创建一个代码,该代码从逗号分隔的文本文件中读取浮点数,并复制到浮点数<的向量< /strong>。文本文件包含数千个由逗号分隔的浮点整数(如1,1,69.8,110,0,-1.8,-1.8,0,120,0,0,0,0,3.23,我尝试使用 getline(),但我想这是为了将文本文件作为字符串读取,并保存在字符串向量中,而不是浮点数。任何人都可以帮我这个< / p>
以下代码无法按我预期的方式工作vector<float> ReplayBuffer;
ifstream in;
in.open("fileName.txt");
if(in.is_open())
{
in.setf(ios::fixed);
in.precision(3);
in.seekg(0,ios::end);
fileSizes = in.tellg();
in.seekg(0,ios::beg);
float number = 0;
for(int i = 0; i<fileSizes/sizeof(float);i++)
{
getline(in, ReplayBuffer[i],', ');
}
for(int i = 0;i<ReplayBuffer.size();i++)
{ cout<<ReplayBuffer[i]<<" , "<<endl; }
in.close();
}
}
答案 0 :(得分:2)
最简单的方法可能是
for (std::string f; getline(in, f, ',');)
ReplayBuffer.push_back(std::stof(f));
如果文件中的浮点数无效,则需要将其包装在try
- catch
块中。
然后您的代码可以简化为
vector<float> ReplayBuffer;
ifstream in("fileName.txt");
for (std::string f; getline(in, f, ',');)
ReplayBuffer.push_back(std::stof(f));
for (auto f : ReplayBuffer)
std::cout << f << " , ";
fixed
和precision
仅影响输出(除非您使用的是自定义num_get
方面),即使您要保留原始代码,这两行也不会执行任何操作。