c++ - 从文本文件读取 float 并复制到 float vector

标签 c++ vector text-files

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

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

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

如果文件中的 float 有可能无效,您需要将其包装在 try - catch block 中。

然后您的代码可以简化为类似的内容

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 方面),即使您要保留原始代码这两行没有任何作用。

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

相关文章:

android - 如何在应用程序目录中添加文件?

mysql - 使用文本文件中的数据作为 MySQL 中存储过程的值

c++ - 当范围消失时,我们如何通过引用返回变量

C++:char* 与 char(*)[]

c++ - 有没有办法在 for 循环中将多个变量 push_back 到一个 vector 中?

c++ - Vector of Vector 如何在内存中对齐?

excel - VBA二进制文件-cnc程序

C++ 编程创造性问题解决

c++ - 从另一个源文件 C++ 访问变量?

c++ - 使用对 vector 的 vector ?