【C++ Primer | 08】IO库
标签:pre 函数 getline alt font 存储 src http color
IO类
C++的输入输出分为三种:
(1)基于控制台的I/O
(2)基于文件的I/O
(3)基于字符串的I/O
istringstream类
描述:从流中提取数据,支持 >> 操作
这里字符串可以包括多个单词,单词之间使用空格分开
1 #include 2 #include 3 using namespace std;
4 int main()
5 {
6 istringstream istr("1 56.7");
7
8 cout //直接输出字符串的数据 "1 56.7"
9
10 string str = istr.str();//函数str()返回一个字符串
11 cout endl;
12
13 int n;
14 double d;
15
16 //以空格为界,把istringstream中数据取出,应进行类型转换
17 istr >> n;//第一个数为整型数据,输出1
18 istr >> d;//第二个数位浮点数,输出56.7
19 cout endl;
20 cout endl;
21 d = 0;
22 n = 0;
23
24 //假设换下存储类型
25 istr >> d;//istringstream第一个数要自动变成浮点型,输出仍为1
26 istr >> n;//istringstream第二个数要自动变成整型,有数字的阶段,输出为56
27
28 //测试输出
29 cout endl;
30 cout endl;
31 return 1;
32 }
输出结果:
举例2:把一行字符串放入流中,单词以空格隔开。之后把一个个单词从流中依次读取到字符串
1 #include 2 #include 3 using namespace std;
4 int main()
5 {
6 istringstream istr;
7 string line,str;
8 while (getline(cin,line))//从终端接收一行字符串,并放入字符串line中
9 {
10 istr.str(line);//把line中的字符串存入字符串流中
11 while(istr >> str)//每次读取一个单词(以空格为界),存入str中
12 {
13 coutendl;
14 }
15 }
16 return 1;
17 }
输出结果:
ostringstream类
描述:把其他类型的数据写入流(往流中写入数据),支持
1 #include 2 #include string>
3 #include 4 using namespace std;
5
6 int main()
7 {
8 ostringstream ostr1; // 构造方式1
9 ostringstream ostr2("abc"); // 构造方式2
10
11 /*----------------------------------------------------------------------------
12 *** 方法str()将缓冲区的内容复制到一个string对象中,并返回
13 ----------------------------------------------------------------------------*/
14 ostr1 "ostr1" 2012 // 格式化,此处endl也将格式化进ostr1中
15 cout ostr1.str();
16
17 /*----------------------------------------------------------------------------
18 *** 建议:在用put()方法时,先查看当前put pointer的值,防止误写
19 ----------------------------------------------------------------------------*/
20 long curPos = ostr2.tellp(); //返回当前插入的索引位置(即put pointer的值),从0开始
21 cout "curPos = " endl;
22
23 ostr2.seekp(2); // 手动设置put pointer的值
24 ostr2.put(‘g‘); // 在put pointer的位置上写入‘g‘,并将put pointer指向下一个字符位置
25 cout endl;
26
27 /*----------------------------------------------------------------------------
28 *** 重复使用同一个ostringstream对象时,建议:
29 *** 1:调用clear()清除当前错误控制状态,其原型为 void clear (iostate state=goodbit);
30 *** 2:调用str("")将缓冲区清零,清除脏数据
31 ----------------------------------------------------------------------------*/
32 ostr2.clear();
33 ostr2.str("");
34
35 cout endl;
36 ostr2.str("_def");
37 cout endl;
38 ostr2 "gggghh"; // 覆盖原有的数据,并自动增加缓冲区
39 cout endl;
40 }
输出结果:
参考资料
- istringstream、ostringstream、stringstream 类介绍 和 stringstream类 clear函数的真正用途
- std::ostringstream用法浅析
【C++ Primer | 08】IO库
标签:pre 函数 getline alt font 存储 src http color
原文地址:https://www.cnblogs.com/sunbines/p/9655190.html
评论