- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做一个项目,我想接受 {float}{single-letter-identifier}
形式的输入,例如 15.6E
,或 10W
。
为此,我认为我可以获取输入字符串,去掉最后一个字母,然后检查是否可以使用 std::stof
执行转换为 float 。这将嵌套在 try-catch
block 中,并允许我通知用户输入无效。
STL 的开放标准 here (第 653 页)声明 std::stof
抛出:
invalid_argument
if wcstod or wcstold reports that no conversion could be performed.
但是,当传递一些它无法转换的东西时它不会抛出,例如“48East”
。重现此行为的代码示例如下:
std::wstring szString = L"48East";
try{
float f = std::stof(szString);
} catch( ... )
{
std::cout << "test" << std::endl;
}
这是在 Debug模式下使用 /Od
在 MSVC10 上编译的,所以我假设调用没有被优化掉。
我将不胜感激任何帮助(或关于我误解/误读规范的地方的指导!)。
最佳答案
在我阅读它时,stof
会尽可能多地转换输入字符串,直到它找到无法转换的内容。如果它不能转换任何东西,它会抛出 invalid_argument
。
关于c++ - 为什么 std::stof 在传递它无法转换的参数时不抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11443074/
I was wondering which way is the most recommended one in modern C++ to convert a string to a numb
我写了一个读取对象的函数。文件并将字符串转换为 float 。代码工作正常,直到 stof() 函数停止正常工作。我不确定这部分是如何突然停止工作的,因为它似乎是一件非常简单的事情,而且直到现在它一直
我以前遇到过这个问题,但找到了解决方法,只是这次没有解决方法。 我正在尝试使用“stof”函数,但出现以下错误:“stof”不是“std”的成员无法解析函数“stof” 如果显示在此页面上,我将以确切
我正在从字符串中读取 float 。它们可以写成各种形式,所以 float f1 = strtof("999999999999.16"); float f2 = stof("0009999999999
我正在从文本文件中读取值并将其作为字符串打印到屏幕上。这个想法是读入每个单独的字符串并将它们与打印在它旁边的读取的字符串的运行平均值一起打印到屏幕上。我有这个用于我的字符串 float 声明 int
我使用 websocket 将一些 float 值作为字符串从 JavaScript 发送到 C++。现在,当将值从字符串转换回 float 时,当精度太高时,有时会出现 out of range 错
当我编译我的代码时,我得到了这个错误 'stof' 未在此范围内声明。 我的代码是 #include #include using namespace std; int main() { string
我在表单中使用 a2lix_translation_form 标签。它的特点是,它允许您以一种形式将多个翻译编辑为一个属性。我把它配置成这样: a2lix_translation_form:
编辑: 改为使用 atof,因为在这种情况下它不会生成拷贝。从两个实现来看,它应该在第一个无效符号后停止。 原文: 考虑这个简单的设置: const char* string = "1.0 2.0 3
我有自己的风格 namespace FaF { // Allocator is my own Memory Allocator for STL using string = std::
我正在做一个项目,我想接受 {float}{single-letter-identifier} 形式的输入,例如 15.6E,或 10W。 为此,我认为我可以获取输入字符串,去掉最后一个字母,然后检查
我正在尝试在 Symfony2 下设置一个带有可上传扩展名 (stof/doctrine) 的文件上传表单 这是我的实体 俱乐部 add('logo', new FileType()) 文件类型 $b
有没有基于gcc 4.7的android ndk编译器支持to_string、stof等字符串转换函数? 在我使用的 NDK 中,我在 ext/vstring.h 中找到了该函数。但是这个函数被包裹在
我在这里问这个问题是因为我在 github 上没有答案。 我正在使用嵌套的树注释,并且据说当一个人像这样保存一个 $food 对象时: $food->setParent($vegetables); p
例如,我已经阅读了有关每个文件的一些文档 http://www.cplusplus.com/reference/string/stof/ http://www.cplusplus.com/refere
为什么 header 的那些C++11新函数( stod , stof , stoull ) 不是 string 的成员函数类(class)? 不是更符合 C++ 编写 mystring.stod(.
我试图让 Stof\DoctrineExtensionsBundle 运行以便能够轻松使用 DoctrineExtensions。但是,PHP 解释器告诉我: No identifier/primar
我在 Ubuntu 14.04 64 位桌面上使用 android NDK 独立工具链 编译 mxnet(v0.9.3) 合并,但遇到了一些错误。第一个错误是: arm-linux-androidea
我正在尝试解决这个问题,市场数据以字符串形式返回货币值,该字符串在数字长度后 8 位。 money = "124.19000540" 我需要它是 124.19,知道如何实现吗? std::stof(m
我想为 std::stoi、std::stof、std::stod 等创建一个通用函数。比如: // std::string -> int std::string str = "1000000"; i
我是一名优秀的程序员,十分优秀!