因此,我四处寻找如何将字符串转换为短整型,并发现了很多有关如何将字符串转换为整数的信息。我会留下一个问题作为对这些线程的评论,但我没有足够的声誉。所以,我想做的是将字符串转换为短字符串,因为数字永远不应该超过三或低于零,并且短字符串可以节省内存(据我所知)。
需要明确的是,我指的不是 ASCII 代码。
我想做的另一件事是检查字符串到短整型的转换是否失败,因为我将使用由用户输入组成的字符串。
我知道我可以使用 while 循环来完成此操作,但是如果有一个内置函数可以在 C++ 中执行此操作,并且与 while 循环一样高效或更高,我很想听听它。
基本上,一个std::stos
由于未知原因缺少该功能,但您可以轻松地推出自己的功能。使用std::stoi
转换为int
,检查值short
边界由例如给出std::numeric_limits<short>
, throw std::range_error
如果不在范围内,否则返回该值。那里。
If you already have the Boost library installed you might use boost::lexical_cast
for convenience, but otherwise I would avoid it (mainly for the verbosity and library dependency, and it's also a little inefficient).
Earlier boost::lexical_cast
众所周知,效率不高,我相信是因为它内部基于 stringstreams,但正如此处评论中所报告的,现代版本是比通过 stringstream 转换更快 http://www.boost.org/doc/libs/1_57_0/doc/html/boost_lexical_cast/performance.html,就此而言,比通过scanf
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)