阅读此常见问题解答后,我选择使用 istringstream 将输入字符串转换为数值。
我的代码如下所示:
<template T>
T Operand<T>::getValue(const std::string &s)
{
T _value;
std::istringstream v_ss(s);
v_ss >> _value;
return _value;
}
当 T 为 int、short、long 或 float 时,没问题我得到正确的值。但是当 T 为 int8_t 时,此代码不起作用。
例如,如果我的输入字符串是“10”,getValue 会返回一个 int8_t 值等于 49。
在 ASCII 表中使用 49 == '1' 时,我猜 >> 运算符只是读取输入字符串中的第一个字符并停止。
常见问题解答中是否有技巧或我不明白的东西?