我有以下问题:我有一张地图string
,string
名为psMap
. 也就是说psMap["a"]="20", psMap["b"]="test", psMap["c"]="12.5", psMap["d"]="1" (true)
,地图存储各种基本数据类型的字符串表达式。
以下函数foo
应该(给定一个键)将映射的值复制到相应的类型变量,即;
int aa;
foo("a", aa);
=> aa=20.
明确地说,我想为所有可能的数据类型提供一个函数(所以没有手动转换),所以我尝试使用模板来利用 的自动转换istringsteram
,即
template<class PARAMTYPE>
void foo(string _name, PARAMTYPE& _dataType) {
PARAMTYPE buff;
istringstream(psMap[_name]) >> buff;
_dataType = buff;
}
问题是,“>>”操作给出了错误:Error: no match for »operator>>« in »std::basic_stringstream<char>((* ....
这里出了什么问题?是否stringstream
无法识别正确的数据类型并尝试通过管道输入“模板”的抽象类型?我怎样才能使我的代码工作?
为你的努力加油 :)