我在 clang
和 gcc
上使用 C++ 14
。我有一个 std::string
,我需要将其转换为 unsigned short
我正在按照以下方式进行操作。
unsigned short u_var = 1234; //some default value
std::string str = "5678"; //some default value
u_var = (unsigned short) std::strtoul(str.c_str(), NULL, 0);
我从 here 找到了这个.
但是,我在执行此操作时收到以下警告
Semantic issue
warning: use of old-style cast
clang
和 gcc
都会出现警告。 我做的有什么问题吗?有没有更好的方法可以在没有任何风险或警告的情况下执行此操作?
同时查看类型转换方法列表here ,似乎没有可用于 std::string
到 unsigned short
的转换选项。
最佳答案
问题出在 C 风格的转换上(它们有点冒险)。请改用 static_cast
。喜欢:
u_var = static_cast< unsigned short >( std::strtoul(str.c_str(), NULL, 0) );
我也会使用 std::stoul
而不是 std::strtoul
,如果可能的话(它是 C++11)
关于c++ - 关于使用 std::strtoul 将 std::string 转换为 unsigned short 的警告。有更好的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443581/