
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ streambuf::pubseekpos() function
The C++ std::streambuf::pubseekpos() function is used to set the position of the next character to be read or written in a stream buffer. This function is often used to seek within a stream, enabling random access to different parts of the data.
This function return the new position on success or pso_type(-1) on failure.
Syntax
Following is the syntax for std::streambuf::pubseekoff() function.
pos_type pubseekpos (pos_type pos, ios_base::openmode which = ios_base::in | ios_base::out);
Parameters
- pos &minius; It indicates the new absolute position for the position pointer.
- which − It is generally used to determine the position on which of the controlled sequences shall be modified.
Return Value
This function returns the new position value of the modified position pointer.
Exceptions
If an exception is thrown, the stream buffer is in a valid state.
Data races
It modifies the stream buffer object.
Example 1
In the following example, we are going to consider the basic usage of the pubseekpos() function.
#include <iostream> #include <sstream> int main() { std::stringbuf a("Welcome"); a.pubseekpos(10); std::cout << a.str().substr(a.pubseekpos(2)) << std::endl; return 0; }
Output
Following is the output of the above code −
lcome
Example 2
Consider the following example, where we are going to modify the stream content.
#include <iostream> #include <sstream> int main() { std::stringbuf buffer("XYZDEFG"); buffer.pubseekpos(0); buffer.sputn("ABC", 3); std::cout << buffer.str() << std::endl; return 0; }
Output
Output of the above code is as follows −
ABCDEFG
Example 3
Let's look at the following example, where we are going to reset the position of the stream.
#include <iostream> #include <sstream> int main() { std::stringbuf a("ABCDEFGH"); a.pubseekpos(0); std::cout << a.str().substr(a.pubseekpos(6)) << std::endl; a.pubseekpos(0); std::cout << a.str().substr(a.pubseekpos(0)) << std::endl; return 0; }
Output
If we run the above code it will generate the following output −
GH ABCDEFGH