[英]How to convert ptrdiff_t to int?
std::wstring x = L"test test test foo";
std::wregex regexp("test");
std::ptrdiff_t match_count(std::distance(
std::wsregex_iterator(x.begin(), x.end(), regexp),
std::wsregex_iterator()));
int n = 3 * match_count;
match_count
返回找到的正則表達式匹配的數量。
但是當我編譯這個例子時,我會收到如下警告:
warning C4244: 'initializing': conversion from 'ptrdiff_t' to 'int', possible loss of data
我如何將ptrdiff_t
轉換為int
而不會“丟失數據”?
我如何將 ptrdiff_t 轉換為 int 而不會“丟失數據”?
通過為 int 大到足以表示 ptrdiff_t 的所有值的系統進行編譯。
如果您以 int 小於 ptrdiff_t 的系統為目標(如警告所示,您的目標系統就是該系統),則無法防止此類轉換可能導致數據丟失。
通過將較大的 integer 類型轉換為較小的類型,總是有可能丟失數據,因為較小的類型不可能代表較大的類型可以表示的所有值。
相反,您可以通過不執行此類轉換來避免數據丟失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.