std::istrstream::istrstream

来自cppreference.com
< cpp‎ | io‎ | istrstream
explicit istrstream( const char* s );
(1) (C++98 中弃用)
(C++26 中移除)
explicit istrstream( char* s );
(2) (C++98 中弃用)
(C++26 中移除)
istrstream( const char* s, std::streamsize n );
(3) (C++98 中弃用)
(C++26 中移除)
istrstream( char* s, std::streamsize n );
(4) (C++98 中弃用)
(C++26 中移除)

构造新的 std::istrstream 及其底层 std::strstreambuf

1,2) 通过调用 strstreambuf(s,0) 构造底层 std::strstreambuf,并以该 strstreambuf 的地址初始化基类。若 s 不指向空终止数组的元素,则行为未定义。
3,4) 通过调用 strstreambuf(s,n) 构造底层 std::strstreambuf,并以该 strstreambuf 的地址初始化基类。若 s 不指向长度至少为 n 个元素的数组的元素,则行为未定义。

参数

s - 要用作流内容的 C 字符串或字符数组
n - 数组大小

示例

#include <iostream>
#include <strstream>
 
int main()
{
    std::istrstream s1("1 2 3"); // 字符串字面量
    int n1, n2, n3;
    if (s1 >> n1 >> n2 >> n3)
        std::cout << n1 << ", " << n2 << ", " << n3 << '\n';
 
    char arr[] = {'4', ' ', '5', ' ', '6'};
    std::istrstream s2(arr, sizeof arr);
    if (s2 >> n1 >> n2 >> n3)
        std::cout << n1 << ", " << n2 << ", " << n3 << '\n';
}

输出:

1, 2, 3
4, 5, 6

参阅

构造 strstreambuf 对象
(std::strstreambuf 的公开成员函数)
构造 ostrstream 对象,部分情况下会分配缓冲区
(std::ostrstream 的公开成员函数)
构造 strstream 对象,部分情况下会分配缓冲区
(std::strstream 的公开成员函数)