【C++ Primer | 08】IO库

2021-06-26 17:06

阅读:648

标签: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


评论


亲,登录后才可以留言!