【发布时间】:2019-04-23 03:39:13
【问题描述】:
我正在为图像编辑制作一个 GUI,我需要显示和处理来自用户的 RGB 值。因此,我使用 uint8_t 来存储这些值,并使用 stringstream 从/到字符串中获取/设置值。我的问题是 uint8_t 被认为是一个字符,所以转换只返回字符串的第一个字符。
示例: 假设我设置输入字符串“123”,我的返回值为49('1'的ASCII码)
由于我使用模板化函数进行转换,因此我希望对代码进行尽可能少的更改(当然)。这是我使用的强制转换函数:
template<typename T>
T Cast(const std::string &str) {
std::stringstream stream;
T value;
stream << str;
stream >> value;
if (stream.fail()) {
Log(LOG_LEVEL::LERROR, "XMLCast failed to cast ", str, " to ", typeid(value).name());
}
return value;
}
所以当我这样做时
uint8_t myInt = Cast<uint8_t>("123");
我得到的是 49 而不是 123,知道吗?
【问题讨论】:
-
'1'字符在 ascii 中的数值为49。
标签: c++ casting stringstream uint8t