# std::istrstream::istrstream

< cpp‎ | io‎ | istrstream

explicit istrstream(const char* s); | (1) |
explicit istrstream(char* s); | (2) |
istrstream(const char* s, std::streamsize n); | (3) |
istrstream(char* s, std::streamsize n); | (4) |

构造新的 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` 的公开成员函数)
(构造函数) | 构造 strstream ，可选地分配缓冲区 (`std::ostrstream` 的公开成员函数)
(构造函数) | 构造 strstream ，可选地分配缓冲区 (`std::strstream` 的公开成员函数)