C++ 从字符串到uint的Boost可选转换问题
有人能解释为什么第一个转换有效,而第二个可选转换无效吗C++ 从字符串到uint的Boost可选转换问题,c++,c++11,c++14,c++17,C++,C++11,C++14,C++17,有人能解释为什么第一个转换有效,而第二个可选转换无效吗 // Example program #include <iostream> #include <string> #include <boost/optional.hpp> int main() { std::string x = "16"; uint16_t t = (uint16_t)std::stoi(x); std::cout<<t; // prin
// Example program
#include <iostream>
#include <string>
#include <boost/optional.hpp>
int main()
{
std::string x = "16";
uint16_t t = (uint16_t)std::stoi(x);
std::cout<<t; // prints 16
std::string x2 = "16";
boost::optional<uint16_t> opt = (uint16_t)std::stoi(x2);
std::cout<<opt; // prints 1
}
//示例程序
#包括
#包括
#包括
int main()
{
std::string x=“16”;
uint16_t=(uint16_t)std::stoi(x);
std::coutboost::optional
有点像指针。在本例中,它的名称可以转换为bool,如果它有值则为true,否则为false。这就是为什么std::cout
std::cout << *opt;