Tho*_*ell 3 c++ stl visual-c++
我正在开展一个项目,我想接受表单的输入{float}{single-letter-identifier}
,例如15.6E
,或10W
.
为此,我认为我可以取输入字符串,去除最后一个字母,然后检查是否可以执行转换以进行浮动,使用std::stof
.这将嵌套在一个try-catch
块中,并允许我通知用户无效输入.
在STL的开放标准在这里(页653)指出std::stof
抛出:
invalid_argument
如果wcstod或wcstold报告无法执行转换.
但是,当传递无法转换的内容时,它不会抛出,例如"48East"
.重现此行为的代码示例如下:
std::wstring szString = L"48East";
try{
float f = std::stof(szString);
} catch( ... )
{
std::cout << "test" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这是在调试模式下在MSVC10上编译的/Od
,所以我假设调用没有被优化掉.
我很感激任何帮助(或指导我误解/误读规范的地方!).
在我阅读它时,stof
尽可能多地转换输入字符串,直到它找到无法转换的内容.如果它无法转换它抛出的任何东西invalid_argument
.
归档时间: |
|
查看次数: |
5666 次 |
最近记录: |