0
我有一个C++类模板化整数类型;沿模板参数的格式规范
template<typename int_type>
void myClass(int_type a) {
// [...]
}
线的东西我现在想从一个文件sscanf()
数据读入int_type
类型的变量。为此,我必须指定格式的int_type
。直到现在,我正在做类似
if(sizeof(int) == sizeof(int_type))
sscanf(buffer, "%d %d", &i, &j);
else if(sizeof(long long) == sizeof(int_type))
sscanf(buffer, "%lld %lld", &i, &j);
else
assert(false);
但这似乎并不是处理事情的最佳方式。
其他建议?
那么可以使用'operator <<()'的模板版本,然后使用'std :: istringstream'而不是'sscanf()'。 – 2014-09-20 09:20:57
'sizeof(int)== sizeof(unsigned int)',但'%d'不是'unsigned int'的正确格式说明符(例如,想想'INT_MAX'和'UINT_MAX'之间的数字)。为了为不同类型提供不同的实现,*函数重载*通常是一种好方法。 – dyp 2014-09-20 09:25:07