从文本文件中读取浮点数并复制到浮点数向量中
Reading floating point numbers from text file and copying to a vector of floating point numbers
我需要在c++中编写一个代码,从以逗号分隔的文本文件中读取浮点数并复制到浮点数的向量。文本文件包含数千个用逗号分隔的浮点整数(如1,1,69.8,110,0,-1.8,-1.8,0,120,0,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 << " , ";
fixed
和precision
只影响输出(除非您使用自定义的num_get
facet),即使您要保留原始代码,这两行也不做任何事情。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 使用浮点数和双精度数的非常小数字的数学
- 使用英特尔内联函数将打包的 8 位整数乘以浮点数向量
- 如何在 c++ 中将小数点后两位数的浮点数分配给另一个浮点数
- 返回浮点数的小数位数
- txt 文件中浮点数的最大和最小值
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 如何将时间字符串 (M:SS) 转换为浮点数
- 复制 -nan 表示浮点数,AVX __m256 复制后显示 0
- 将C++浮点数组成员直接封送到 C#,而无需复制
- 使用memcpy将浮点数组复制到uint8_t的数组是否有效
- 如何将变量从主机上的自定义类数组复制到 CUDA 中设备上的浮点数组中
- std::copy 将双精度数组复制到浮点数数组
- 将 cv::Mat 向量复制到浮点数向量的最佳方法是什么?
- 将“复制浮点数组”设置为“多维数组”
- 从文本文件中读取浮点数并复制到浮点数向量中