我需要用C ++编写一个代码,以从逗号分隔的文本文件中读取浮点数并将其复制到浮点数的向量中。文本文件包含数千个以逗号分隔的浮点整数(例如1, 69.8,110,0,-1.8,-1.8,0,120,0,0,0,0,3.23,)我尝试使用getline(),但我想它的意思是将文本文件读取为字符串,然后保存在字符串向量中,而不是浮点数中。任何人都可以帮我

以下代码无法按我预期的方式工作

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();
    }
}

最佳答案

最简单的方法也许是

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 << " , ";


fixedprecision仅影响输出(除非您使用的是自定义num_get构面),即使您保留原始代码,这两行也不起作用。

关于c++ - 从文本文件中读取浮点数并将其复制到浮点数 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23900762/

10-11 06:27
查看更多