簡體   English   中英

有人可以簡單地向我解釋一下什么是 std::streampos 嗎?

[英]Can someone explain to me briefly what is std::streampos?

你能給我看一些std::streampos的例子嗎? 我不確定它的用途,也不知道如何使用它。

我在github的一個項目中看到:

std::streampos pos = ss.tellg();

其中ssstd::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM