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