我需要用 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/