C++ (13) 输入输出流 - 字符串流
- 字符串流介绍
- 字符串流以内存中用户定义的字符数组(字符串)作为输入输出对象。
- 字符串流也有缓冲区,当缓冲区满了(或遇到换行符),流缓冲的数据一起存入字符数组。
- 头文件<strstream>
- 1. 建立输出字符串流对象
- ostrestream的构造函数:
- ostrestream::ostrstream(char *buffer, int n, int mode = ios::out);
- buffer指字符串数组首元素的指针
- n是流缓冲区的大小
- iost::out是默认值
- 建立输出字符串流对象与字符数组的关联:
- ostrstream strout(cStr1, 20)
- ostrestream的构造函数:
- 2. 建立输入字符串流对象
- istrstream的构造函数:
- istrstream::istrstream(char *buffer)
- istrstream::istrstream(char *buffer, int n)
- buffer 是指向字符数组首元素的指针
- n 是缓冲区的大小
- 建立输入字符串流对象与字符数组的关联
- istrstream strin(cStr2); // 将cStr2字符数组中的全部数组作为输入字符串流的内容
- istrstream strin(cStr2); // 将cStr2字符数组中的全部数组作为输入字符串流的内容
- istrstream的构造函数:
- 3. 建立输入输出字符串流对象
- strstream的构造函数
- strstream::strstream(char *buffer, int n, int mode)
- 建立输入输出流对象鱼字符串流流的关联
- strstream strio(cStr3, sizeof(cStr3), ios::in|ios::out);
- 以字符数组cStr3为输入输出对象,缓冲区大小与数组cStr3相同
- strstream的构造函数
- 举例
-
#include <strstream> #include <iostream> using namespace std; int main() { char cStr[50] = "12 34 65 -23 -32 33 61 99 321 32"; int nArray[10]; cout << "Old cStr: " << cStr << endl; // 以字符串cStr作为输入流,建立strin与cStr的关联,缓冲区大小为字符串cStr的大小 istrstream strin(cStr, sizeof(cStr)); int i, temp; for (i = 0; i < 10; i++) strin >> nArray[i]; // 输出读入的数组 cout << "nArray: "; for (i = 0; i < 10; i++) cout << nArray[i] << " "; cout << endl; for (int i = 0; i < 5; i++) // 数组旋转 { temp = nArray[i]; nArray[i] = nArray[9 - i];; nArray[9-i] = temp; } ostrstream strout(cStr, sizeof(cStr)); for (i = 0; i < 10; i++) strout << nArray[i] << " "; strout << endl; // 加入'\0' cout << "New cStr: " << cStr << endl; // 输出最新的cStr return 0; }
扩展阅读:
- stringstream实现字符字符类型转换。
- C/C++字符串流(stringstream)