參照這裏提供的解決方案,美麗, Convert string to int with bool/fail in C++,從的std :: string轉換爲UINT8
我想爲std :: string轉換爲8位數字(無符號數) 問題是因爲8位數字表示爲字符,所以它被解析錯了
(試圖解析任何1位以上的數字 - 像10 - 失敗)
任何想法?
參照這裏提供的解決方案,美麗, Convert string to int with bool/fail in C++,從的std :: string轉換爲UINT8
我想爲std :: string轉換爲8位數字(無符號數) 問題是因爲8位數字表示爲字符,所以它被解析錯了
(試圖解析任何1位以上的數字 - 像10 - 失敗)
任何想法?
使用模板特殊化:
template <typename T>
void Convert(const std::string& source, T& target)
{
target = boost::lexical_cast<T>(source);
}
template <>
void Convert(const std::string& source, int8_t& target)
{
int value = boost::lexical_cast<int>(source);
if(value < std::numeric_limits<int8_t>::min() || value > std::numeric_limits<int8_t>::max())
{
//handle error
}
else
{
target = (int8_t)value;
}
}
太棒了!非常感謝 – Boaz 2012-03-07 15:30:33
C++ 11有以下:http://en.cppreference.com/w/cpp/string/basic_string/stoul但你仍然需要轉換(即'static_cast')結果和檢查邊界。 –
rubenvb
2012-03-07 13:25:55