流中的输入位置和输出位置有什么区别?
What is difference between input position and output position in streams?
输入位置和输出位置在basic_iostream
有区别吗?
如果我将字节放入流中并且我想读取它们,我应该使用什么来从头开始、seekg()
或seekp()
读取?
seekg
设置当前关联的 streambuf 对象的输入位置指示器。
seekp
设置当前关联的 streambuf 对象的输出位置指示器。
使用seekg
,您可以将指标设置在所需位置并从那里读取。
例如,seekg(0)
将快退到 streambuf 对象的开头,您可以从开头读取。
下面是一个简单的示例:
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string str = "Read from Beginning";
std::istringstream in(str);
std::string word1, word2, word3;
in >> word1;
in.seekg(0); // rewind
in >> word2;
in.seekg(10); // forward
in >> word3;
std::cout << "word1 = " << word1 << 'n'
<< "word2 = " << word2 << 'n'
<< "word3 = " << word3 << 'n';
}
输出为:
word1 = Read
word2 = Read
word3 = Beginning
有关更多信息,请参阅 seekg 和 seekp 的文档。
问题是为什么我们需要两个位置? 某些对象扮演双重角色,您可以以交错方式读取和写入它们。参见 std::stringstream,它同时实现了 istream 和 ostream std::stringstream ss; SS<<"哈洛"; 填充缓冲区并在 hallo 末尾(尾部(设置输出位置,但输入位置(头部(仍为 0。所以可以从中读取一些东西。 它是队列的实现。
相关文章:
- 这个返回元素位置的基于循环的函数有什么问题?
- 流中的输入位置和输出位置有什么区别?
- 当使用Lua作为嵌入式语言(比如c++)时,有什么简单/方便的方法可以找到变量在Lua中的定义位置吗
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- 我应该在服务模板中的什么位置添加自己的代码?
- pimpl 在 C++ 应用程序/库中的什么位置使用?任何例子
- Qt:交换QGraphicsRectItem位置的最佳方法是什么
- *的位置有什么区别:*变量与变量*
- 根据这些字符串输入在句子中的位置对这些字符串输入进行排序的更快方法是什么
- 库位于计算机中的什么位置
- 什么是 _mm_prefetch() 位置提示?
- 指针指向紧挨着对象末尾的位置是什么意思?
- Mac OS X 上的达尔文斯图书馆位置是什么?
- libc++ 标头位于 Mac OS X Mavericks 上的什么位置
- libtool的位置是什么,什么时候使用它
- 我的字节数组到十六进制字符串转换器有什么问题,或者为什么它在写入文件时会在某个位置后剪切符号?
- 对齐C++指针位置的目的是什么
- 这两行有什么区别?在不同位置使用整数
- 查找控件相对于其父窗口的位置的最佳方法是什么?
- 在一个位置或更低的位置上计数集位的有效方法是什么?< / h1 >