首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++11中没有"sto{short,unsigned }“函数吗?

在C++11中没有"sto{short,unsigned }“函数吗?
EN

Stack Overflow用户
提问于 2011-10-25 20:40:19
回答 1查看 3K关注 0票数 17

C++11引入了方便函数stoistolstollstoulstoullstofstodstold,它们分别将字符串转换为整数、长、长、无符号长、无符号长、浮点、双或长双。

为什么没有对短和未签短的爱?

除了这种疏漏使我从原则上感到烦恼之外,我还发现自己不得不在这样的情况下笨拙地工作:

代码语言:javascript
复制
#include <string>

struct S
{
    S(short);
};

int main()
{
    S s{std::stoi("4")};
}

错误:

代码语言:javascript
复制
test.cpp: In function 'int main()':
test.cpp:10:23: error: narrowing conversion from 'int' to 'short int' inside { } [-fpermissive]

我想写S s{std::stos("4")};,如果有一个stos.

相反,我不得不写S s{static_cast<short>(std::stoi("4"))};..。哦,等等,这也不起作用,它会悄悄地截断整数而不是空号,而不是假设的stos函数,如果整数不适合空的话,就会抛出异常。因此,基本上,我回到了我的预C++11的stringstreamsboost::lexical_cast等的替代品。

编辑stos :既然人们似乎很难找到我的实际问题,那就是,为什么没有和函数与其他函数一起使用

EN

回答 1

Stack Overflow用户

发布于 2011-10-25 20:59:28

猜测: C++从C(可能是C99变体)获取s到xxx函数只是为了兼容性;如果C++是独立开发的,就不会有这样的函数。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7895583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档