C++ Ostream::seekp() 函数



C++ 的 std::ostream::seekp() 函数用于移动流的输出位置指示器。它允许重新定位流中的写指针,从而能够将数据写入特定位置。此函数可以采用绝对位置或相对于给定位置(开头、结尾或当前位置)的偏移量。

语法

以下是 std::ostream::seekp() 函数的语法。

ostream& seekp (streampos pos);
or
ostream& seekp (streamoff off, ios_base::seekdir way);

参数

  • pos − 指示流中新的绝对位置。
  • off − 指示偏移量。
  • way − 指示 ios_base::seekdir 类型的对象。

返回值

它返回 ostream 对象 (*this)。

异常

如果抛出异常,则对象处于有效状态。

数据竞争

修改流对象,并且对同一流对象的并发访问可能会导致数据竞争。

示例

在以下示例中,我们将考虑 seekp() 函数的基本用法。

#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream a;
    a << "W LCOME";
    a.seekp(1);
    a << "E";
    std::cout << a.str() << std::endl;
    return 0;
}

输出

以上代码的输出如下:

WELCOME

示例

考虑以下示例,我们将使用 seekp() 覆盖字符串的一部分。

#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream a;
    a << "1231114567";
    a.seekp(3);
    a << "XYZ";
    std::cout << a.str() << std::endl;
    return 0;
}

输出

以下是以上代码的输出:

123XYZ4567

示例

让我们看一下以下示例,我们将把数据追加到末尾。

#include <iostream>
#include <sstream>
int main()
{
    std::ostringstream a;
    a << "Welcone To";
    a.seekp(0, std::ios::end);
    a << " TutorialsPoint";
    std::cout << a.str() << std::endl;
    return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

Welcone To TutorialsPoint
ostream.htm
广告

© . All rights reserved.