`
evasiu
  • 浏览: 169000 次
  • 性别: Icon_minigender_2
  • 来自: 广州
博客专栏
Fa47b089-e026-399c-b770-017349f619d5
TCP/IP详解卷一>阅读...
浏览量:12524
社区版块
存档分类
最新评论

c++ premier -- 标准IO库

 
阅读更多

C++的输入输出由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写,还定义了其他一些类型,使string对象能够像文件一样操作,从而使我们无须IO就能实现数据与字符之间的转换。IO类型在三个独立的头文件中定义,iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的stream对象。首先看一下各个类之间的继承关系:



 

使用流应该注意到的问题有:

1. IO对象不可复制或赋值。

这表示:(1)由于只有支持复制的元素类型可以存储在vector或其他容器里,因此vector不能存储在vector或其他容器中。(2)形参或返回类型也不能为流类型,如果需要传递或返回IO对象,则必须传递或返回该对象的指针或引用。(怪不得我印象中看到的函数参数都是istream&这样子的)

 

2. 流的条件状态



 

可以如下管理输入操作:

int ival;
while( cin>>ival, !cin.eof() ){
     if( cin.bad() )
           throw runtime_error( "IO stream corrupted" );
     if( cin.fail() ){
           cerr << "bad data, try again";
           cin.clear( istream::failbit);
           continue;
      }
      //ok to process ival
}

 

3. 输出缓冲区的管理

cout << "hi!" << flush;  //flushes the buffer, adds no data
cout << "hi!" <<endl;    //inserts a newline then flushes
cout << "hi!" <<ends;   //inserts a null, then flushes

cout << unibuf << "first" << "second" <<nounibuf;
//equivalent to :
cout << "first" << flush << "second" << flush;

//ties a i/o stream to an o/i stream
cin.tie(&cout);
cin.tie(0);      //break tie to cout

 

4. 文件流

文件流必须跟某一特定文件绑定(通过文件名),可以在初始化时绑定,也可以在后期open的时候绑定。

ifstream infile( ifile.c_str() ); //ifile is a string object
ofstream outfile; 
outfile.open( "out" );   //associates a file when open

//check if the file is successfully opened
if( !infile ){
     //the file is not opened to use
}

//re-associate the stream with a new file
infile.close();
infile.open( "next" );

//clear the state of the stream
//files is a vector that stores names of the files, it is an iterator from begin
ifstream input;
vector<string> :: const_iterator it = files.begin();
while( it != files.end() ){
     input.open( it->c_str() );
     if( !input )
         break;
     while( input >> s )
         process(s);
     input.close();
     input.clear();   //clear the state of the stream
     ++it;
}

 

5. 文件模式

在打开文件时,无论是调用open还是以文件名作为流初始化的一部分,都需指定文件模式。每个fstream类都定义了一组表示不同模式的值,用于指定流打开的不同模式。如下:


out、trunc、app模式只能用于指定与ofstream或fstream对象关联的文件;in模式只能用于指定与ifstream或fstream对象关联的文件。所有的文件都可以用ate或binary模式打开。ate模式只有在打开时有效:文件打开后将定位在文件尾。

 

6. 字符串流

字符串流为字符串的操作提供了更加自由方便的处理方法,把字符串保存在字符串流中,就相当于把数据缓存起来,然后可以再次作为输入,决定处理方式。例如,我们需要读取一行数据,然后再对这行数据进行逐个处理;或者是将字符串进行转换或格式化。

//片断一:处理行,再处理行中的每个单词
string line, word;
while( getline(cin, line) ){
     istringstream stream(line);
     while( stream >> word )
           process(word);
}


//片断二:字符串流提供的格式转换
int val1 = 300, val2 = 400;
ostringstream format_message;
format_message << "val1: "<<val1 << "\n"
                            << "val2: "<<val2 << \n";

istringstream input_istream( format_message.str() );
string dump;
input_istream >> dump >> val2 >> dump >> val1;
cout<< val1 << " " << val2 <<endl;

 

  • 大小: 31.2 KB
  • 大小: 79 KB
  • 大小: 24.1 KB
分享到:
评论

相关推荐

    C++premier 第四版中文版

    这本书名为《C++ Premier》第四版的中文版,意味着它是一本专门介绍C++编程语言的书籍,并且是针对中文读者进行编写的版本。C++是一种广泛使用的、面向对象的编程语言,由Bjarne Stroustrup在20世纪80年代初基于...

    CPP-Premier-Plus.zip_plus_销售

    "CPP-Premier-Plus.zip_plus_销售"这个标题可能指的是该书的配套资源,特别是针对学习者或教师的补充材料,可能是课后习题的答案,或者是用于教学辅助的资料,旨在帮助读者更好地理解和掌握C++编程。 描述中提到的...

    c++ premier 习题解答(完整pdf版)

    c++ premier 是学习c++的经典著作,通过学习这本数,你可以有很大进步;本资源是书本对应的习题解答,第四版,相当详细

    C++ premier中文版 电子书

    C++不仅保留了C语言的效率和灵活性,还引入了类、模板、异常处理、命名空间等面向对象的概念,以及泛型编程和 STL(标准模板库)等现代C++特性。 《C++ Primer》第四版中英文对照_chm.chm文件是一个压缩包,其中...

    XMind总结C++标准IO库

    C++标准IO库,通过C++标准输入输出流对控制窗口,磁盘文件字符串流进行控制。内容也包含条件状态,文件模式等内容。

    2017-NESC-handbook-premier-edition.zip

    总的来说,《2017-NESC-handbook-premier-edition.pdf》是电力行业的重要参考资料,它不仅提供了全面的安全规定,还为实际操作提供了详细指导,对于理解和执行电气安全标准至关重要。无论是专业人员还是行业新手,都...

    C++ Premier第四版中文英文源代码

    7. **标准库的使用**:C++标准库包含了许多有用的容器(如vector、list、set)、算法(如排序、搜索)和实用工具(如字符串、智能指针)。学习如何有效利用标准库是提高编程效率的关键。 8. **实践项目**:C++ ...

    Premier - MS Windows Shell Script Programming for the Absolute Beginner.chm

    Premier - MS Windows Shell Script Programming for the Absolute Beginner.chm

    c++ premier 第四版 课后习题答案+所有源代码

    《C++ Primer 第四版》的习题涵盖广泛,从基础语法到面向对象编程,再到STL(标准模板库)和泛型编程,都有所涉及。习题解答提供了正确答案和思路,有助于读者自我检查,理解错误之处,并学习如何解决实际问题。 源...

    Premier - Crystal Reports 9 Essentials_crystalreports9_crystalre

    《Premier - Crystal Reports 9 Essentials》是一本深入解析Crystal Reports 9这一强大报表工具的教程,旨在帮助用户掌握其核心功能与应用技巧。Crystal Reports是Business Objects公司(现为SAP的一部分)开发的一...

    premier-eye:物体检测程序

    总理眼物体检测程序 开始工作之前,Premier-eye需要在设备上创建数据和输出文件夹,并将图像放置在此处以进行识别工作。物体检测模块当地使用要求: Python&gt; = 3.6 对于运行模块,您需要运行API和SPA来发送数据,...

    ebs-122-premier-support-extended-through-at-least-2035.pdf

    oracle ebs

    C++ Premier顺序容器思维导图总结

    附件的内容为使用思维导图XMind总结C++标准库的顺序容器,通过把C++ Premier顺序容器翔实的放在一张图片上,可以非常方便的梳理思路,在工作中也能提高工作效率。灵活的使用容器是C++开发人员必须具备的技能

    C++ Premier 第一章思维导图学习

    XMind是一个非常神奇的软件,能够帮助我们组织思考,很不错的工具。C++ Premier是非常成熟的开发语言讲解书籍,非常经典

    C++ premier思维导图学习

    使用XMind学习C++Premier.好好学习好好工作aaaaaaaaa阿凡达附加库撒地方就是扩大了房价数据奥凯电缆飞机撒看到

Global site tag (gtag.js) - Google Analytics