C++ Primer 笔记6

来源:互联网 发布:python 重定向 编辑:程序博客网 时间:2024/06/05 11:45
1、IO类型在3个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象。
2、标准库还定义了一组相关的类型,支持wchar_t类型。每个类都加上“w”前缀,以此与char类型的版本区分开来。wchar_t类型的标准输入对象是wcin,标准输出是wcout,而标准错误是wcerr。每一个IO头文件都定义了char和wchar_t类型的类和标准输入/输出对象。
3、输出缓冲区的刷新:第一个是使用flush,用于刷新流,但不在输出中添加任何字符。第二个则是比较少用的ends,这个操作符在缓冲区中插入空字符null,然后刷新它。
4、unitbuf操作符,如果需要刷新所有输出,最好使用unitbuf操作符,这个操作符在每次执行完写操作后都刷新流。nounitbuf操作符将流恢复为使用正常的、由系统管理的缓冲区刷新方式。
5、如果打算重用已存在的流对象,那么while循环必须在每次循环时记得关闭和清空文件流:
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();
  ++it;
} //如果忽略clear的调用,则循环只能读入第一个文件。如果程序员需要重用文件流读写多个文件,必须在读  //另一个文件之前调用clear清空该流的状态。
6、标准库定义了3种类型的字符串流: //包含sstream头文件
 istringstream,由istream派生而来,提供读string的功能。
 ostringstream,由ostream派生而来,提供写string的功能。
 stringstream,由iostream派生而来,提供读写string的功能。
7、string line, word;
   while(getline(cin,line)){
    istringstream stream(line);
    while(stream>>word){
    //do per-word processing
     }
   }
这里,使用getline函数从输入读取整行内容。然后为了获得每行中的单词,将一个istringstream对象与所读取的行绑定起来,这样只需使用普通的string输入操作符即可读出每行中的单词。
8、stringsstream提供的转换和/或格式化
  stringstream对象的一个常见用法是,需要在多种数据类型之间实现自动格式化时使用该类类型。例如,有一个数值型数据集合,要获取它们的string表示形式,或反之。sstream输入和输出操作可自动地把算术类型转化为相应的string表示形式,反过来也可以。
原创粉丝点击