[英]Can someone explain to me briefly what is std::streampos?
你能給我看一些std::streampos
的例子嗎? 我不確定它的用途,也不知道如何使用它。
我在github的一個項目中看到:
std::streampos pos = ss.tellg();
其中ss
是std::stringstream
。
為什么我們不使用int pos = ss.tellg()
,例如在這種情況下?
為什么我們不使用 int pos = ss.tellg(),例如在這種情況下?
因為std::streampos
恰好是std::basic_stringstream<char, std::char_traits<char>, std::allocator<char>>::tellg()
返回的類型。
也許在一台計算機上它可以干凈地轉換為int
,但在另一台計算機上不是。 通過使用正確的類型,您的代碼是平台無關的。
另請注意, std::streampos
是非常特定的 class 的 tellg( tellg()
方法返回的類型,而不是任何地方的tellg()
方法返回的類型。 其他流很可能返回不同的類型而不是std::stream_pos
,您應該考慮到這一點。
為pos
選擇正確類型的實際最簡潔的方法是直接詢問類型:“我應該使用什么來表示 stream 中的位置?”:
std::stringstream::pos_type pos = ss.tellg();
或者只使用auto
這樣你就不用擔心了:
auto pos = some_stream.tellg();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.