Tôi đang xử lý vấn đề đọc số nguyên không dấu 64 bit unsigned long long
từ một chuỗi. Mã của tôi nên làm việc cho cả GCC 4.3 và Visual Studio 2010.Chuyển đổi số nguyên 64 bit từ chuỗi
tôi đọc câu hỏi này và câu trả lời về chủ đề này: Read 64 bit integer string from file và thougth rằng strtoull
sẽ làm cho công việc tốt và hiệu quả hơn so với sử dụng một std::stringstream
. Rất tiếc, strtoull
không khả dụng trong stdlib.h
của Visual Studio.
Vì vậy, tôi đã viết một chức năng templated ngắn:
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");
Tôi lo lắng về hiệu quả của giải pháp này như vậy, là có một lựa chọn tốt hơn trong escenario này?
Đây có phải là điểm nóng của ứng dụng của bạn không? –
@Violet: Không thực sự, nhưng nó tải các tệp lớn định kỳ để làm mới GUI và tôi muốn nó chạy mượt mà nhất có thể. –
Bạn có thể viết chuyển đổi của riêng bạn. Nó có khả năng nhanh hơn sử dụng 'stringstream'. Xem điểm chuẩn tại đây: http://tinodidriksen.com/2010/02/16/cpp-convert-string-to-int-speed/ – Pablo