从istream中获取下一个float
Get next float from an istream?
STL中是否存在从文件中获取下一个浮点值的函数?
例如:
Data.txt:
blah blah blah blah blah
blah blah blah blah blah
blah 0.94 blah blah blah
std::istream inputFile(Data.txt);
float myNumber = inputFile.GetNextFloat();
std::cout << myNumber << std::endl; // Prints "0.94"
C++中的I/O流函数(以及C中的stdio函数)设计用于读取格式化的输入。也就是说,它们是为读取程序所期望的类型的值而定制的。没有任何东西试图从流中读取值,只接受特定类型,而丢弃其他值。此外,"浮点"可能是什么还有些不清楚:例如,"+1"对一些人来说是一个非常好的"浮点",而另一些人可能希望它至少包含一个小数点,甚至可能在小数点后至少一位。
C++2011和Boost(如果您没有访问C++2011实现的权限)实现了正则表达式,您应该能够使用它检测下一个与您的首选定义匹配的浮点数。以下是该技术的一个简单演示:
#include <iostream>
#include <string>
#include "boost/regex.hpp"
namespace re = boost;
int main()
{
re::regex floatre("^[^-+0-9]*([-+]?[0-9]+\.[0-9]+)(.*)");
for (std::string line; std::getline(std::cin, line); )
{
re::smatch results;
while (re::regex_match(line, results, floatre))
{
std::cout << " float='" << results[1] << "'n";
line = results[2];
}
}
}
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- CIN 仅在输入非数字值时跳过下一个 CIN
- 查找最小的下一个更大的元素
- 转到基于范围的 for 循环中的下一个迭代器
- 如何检查流中文件的下一个单词是否为 alpha?
- 如何打印下一个字母直到 Z 并继续到 A?
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- 使用一个内存集数组和单个堆栈在 O(n) 中查找数组的下一个更大元素
- 有没有一种标准方法可以在C++中获取第 n 个"下一个"浮点值
- 下一个云桌面客户端构建过程
- C++自定义流操纵器,用于更改流上的下一个字符串
- 链表指针赋值为什么我们不能直接将尾巴分配给 temp 而不是尾巴>尾巴下一个
- 下一个排列定义
- 查找下一个具有真值C++的数组索引
- 如何比较文件中包含的下一个字符
- 检查IP是否在其他IP网络范围内,并查找下一个可用IP
- 当我使用c++生成器时,如何在输入完成后自动跳转到下一个"TEdit"
- 从istream中获取下一个float