我正在處理從字符串讀取64位無符號整數unsigned long long
的問題。我的代碼應工作無論是GCC 4.3和Visual Studio 2010從字符串64位整數轉換
我看這個問題和答案的話題:Read 64 bit integer string from file和那吼聲將strtoull
使工作就好比使用std::stringstream
更有效。不幸的是,strtoull
在Visual Studio的stdlib.h
中不可用。
所以我寫了一個短模板功能:
template <typename T>
T ToNumber(const std::string& Str)
{
T Number;
std::stringstream S(Str);
S >> Number;
return Number;
}
unsigned long long N = ToNumber<unsigned long long>("123456789");
我很擔心這個解決方案,因此效率,有沒有在這個escenario一個更好的選擇?
這是你的應用的熱點? –
@Violet:並非如此,但它會定期加載大文件以刷新GUI,並希望它儘可能流暢地運行。 –
你可以編寫自己的轉換。這可能比使用'stringstream'更快。看到基準在這裏:http://tinodidriksen.com/2010/02/16/cpp-convert-string-to-int-speed/ – Pablo