• IO标准库类型和头文件

aaarticlea/png;base64,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" alt="" />

aaarticlea/png;base64,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" alt="" />

出于某些原因,标准库类型不允许做复制或赋值操作。

ofstream out1, out2;
out1 = out2; // error: cannot assign stream objects
// print function: parameter is copied
ofstream print(ofstream);
out2 = print(out2);

这个要求有两层特别重要的含义。只有支持复制的元素类型可以存储在 vector 或其他容器类型里。由于流对象不能复制,因此不能存储在 vector(或其他)容器中(即不存在存储流对象的 vector 或其他容器)

第二个含义是:形参或返回类型也不能为流类型。如果需要传递或返回 IO 对象,则必须传递或返回指向该对象的指针或引用

ofstream &print(ofstream&);              // ok: takes a reference, no copy
while (print(out2)) { /* ... */ }

一般情况下,如果要传递 IO 对象以便对它进行读写,可用非 const 引用的方式传递这个流对象。对 IO 对象的读写会改变它的状态,因此引用必须是非 const 的。

  • 条件状态

IO 标准库管理一系列条件状态(condition state)成员,用来标记给定的 IO 对象是否处于可用状态,或者碰到了哪种特定的错误。

aaarticlea/png;base64,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" alt="" />

考虑下面 IO 错误的例子:

 int ival;
cin >> ival;

如果在标准输入设备输入 Borges,则 cin 在尝试将输入的字符串读为 int 型数据失败后,会生成一个错误状态。类似地,如果输入文件结束符(end-of-file),cin 也会进入错误状态。而如果输入 1024,则成功读取,cin 将处于正确的无错误状态。

流必须处于无错误状态,才能用于输入或输出。检测流是否可用的最简单的方法是检查其真值

if (cin)
// ok to use cin, it is in a valid state while (cin >> word)
// ok: read operation successful ...

if 语句直接检查流的状态,而 while 语句则检测条件表达式返回的流,从而间接地检查了流的状态。如果成功输入,则条件检测为 true

许多程序只需知道是否有效。而某些程序则需要更详细地访问或控制流的状态,此时,除了知道流处于错误状态外,还必须了解它遇到了哪种类型的错误。例如,程序员也许希望弄清是到达了文件的结尾,还是遇到了 IO 设备上的错误。

所有流对象都包含一个条件状态成员,该成员由 setstateclear 操作管理。这个状态成员为 iostate 类型,这是由各个 iostream 类分别定义的机器相关的整型。该状态成员以二进制位(bit)的形式使用。

每个 IO 类还定义了三个 iostate 类型的常量值,分别表示特定的位模式。这些常量值用于指出特定类型的 IO 条件,可与位操作符一起使用,以便在一次操作中检查或设置多个标志。

badbit 标志着系统级的故障,如无法恢复的读写错误。如果出现了这类错误,则该流通常就不能再继续使用了。如果出现的是可恢复的错误,如在希望获得数值型数据时输入了字符,此时则设置 failbit 标志,这种导致设置 failbit 的问题通常是可以修正的。eofbit 是在遇到文件结束符时设置的,此时同时还设置了 failbit

流的状态由 badfaileofgood 操作提示。如果 badfail 或者 eof 中的任意一个为 true,则检查流本身将显示该流处于错误状态。类似地,如果这三个条件没有一个为 true,则 good 操作将返回 true

clearsetstate 操作用于改变条件成员的状态。clear 操作将条件重设为有效状态。在流的使用出现了问题并做出补救后,如果我们希望把流重设为有效状态,则可以调用 clear 操作。使用 setstate 操作可打开某个指定的条件,用于表示某个问题的发生。除了添加的标记状态,setstate 将保留其他已存在的状态变量不变。

可以如下管理输入操作

int ival;
// read cin and test only for EOF; loop is executed even if there are other IO failures
while (cin >> ival, !cin.eof()) {
if (cin.bad()) // input stream is corrupted; bail out
throw runtime_error("IO stream corrupted");
if (cin.fail()) { // bad input
cerr<< "bad data, try again"; // warn the user
cin.clear(istream::failbit); // reset the stream
continue; // get next input
}
// ok to process ival
}

这个循环不断读入 cin,直到到达文件结束符或者发生不可恢复的读取错误为止。循环条件使用了逗号操作符:首先计算它的每一个操作数,然后返回最右边操作数作为整个操作的结果。因此,循环条件只读入 cin 而忽略了其结果。该条件的结果是 !cin.eof() 的值。如果 cin 到达文件结束符,条件则为假,退出循环。如果 cin 没有到达文件结束符,则不管在读取时是否发生了其他可能遇到的错误,都进入循环。

rdstate 成员函数返回一个 iostate 类型值,该值对应于流当前的整个条件状态:

// remember current state of cin
istream::iostate old_state = cin.rdstate();
cin.clear();
process_input(); // use cin
cin.clear(old_state); // now reset cin to old state

常常会出现需要设置或清除多个状态二进制位的情况。此时,可以通过多次调用 setstate 或者 clear 函数实现。另外一种方法则是使用按位或(OR)操作符在一次调用中生成“传递两个或更多状态位”的值。按位或操作使用其操作数的二进制位模式产生一个整型数值。对于结果中的每一个二进制位,如果其值为 1,则该操作的两个操作数中至少有一个的对应二进制位是 1。例如:

// sets both the badbit and the failbit
is.setstate(ifstream::badbit | ifstream::failbit);
  • 输出缓存区的管理

每个 IO 对象管理一个缓冲区,用于存储程序读写的数据。如有下面语句:

os << "please enter a value: ";

系统将字符串字面值存储在与流 os 关联的缓冲区中。下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或者文件:

程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区;在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写下一个值之前刷新;用操纵符显式地刷新缓冲区,例如行结束符 endl;在每次输出操作执行完后,用 unitbuf 操作符设置流的内部状态,从而清空缓冲区;可将输出流与输入流关联(tie)起来。在这种情况下,在读输入流时将刷新其关联的输出缓冲区。

我们的程序已经使用过 endl 操纵符,用于输出一个换行符并刷新缓冲区。除此之外,C++ 语言还提供了另外两个类似的操纵符。第一个经常使用的 flush,用于刷新流,但不在输出中添加任何字符。第二个则是比较少用的 ends,这个操纵符在缓冲区中插入空字符 null,然后后刷新它:

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

//cout是输出语句,flush是缓冲区的内容,cout<<flush表示将缓冲区的内容马上送进cout,把输出缓冲区刷新

当程序向输出设备中输出数据时,输出的数据先被存放在计算机缓 冲区(Buffer)内。当缓冲区存满时,这些数据才真正地输出到输出设备。但是,如果输出的字符序列中出现了 endl控制符,那么缓冲区内的所有数据将立即输出到输出设备,而无论缓冲区是否已经存满。因此,endl控制符的作用是将光标移动到输出设备中下一行开 头处,并且清空缓冲区。很有可能出现在程序终止时,并没有输出所有的输出数据的情况。这是因为在程序终止时,缓冲区并不一定是满的,所以也就没有将缓冲区中的数据写到输出设备。在C++中,可以使用flush函数来清空缓冲区,即使缓冲区中的数据不是满的。与endl控制符不同的是,flush函数并不是把光标移到下一行的开头处。总之,flush和endl的功能一样,只是前者不换行而已。

如果需要刷新所有输出,最好使用 unitbuf 操纵符。这个操纵符在每次执行完写操作后都刷新流:

cout << unitbuf << "first" << " second" << nounitbuf;

等价于:

cout << "first" << flush << " second" << flush;

nounitbuf 操纵符将流恢复为使用正常的、由系统管理的缓冲区刷新方式。

警告:如果程序崩溃了,不会刷新缓冲区。如果程序不正常结束,输出缓冲区将不会刷新。在尝试调试已崩溃的程序时,通常会根据最后的输出找出程序发生错误的区域。如果崩溃出现在某个特定的输出语句后面,则可知是在程序的这个位置之后出错。调试程序时,必须保证期待写入的每个输出都确实被刷新了。因为系统不会在程序崩溃时自动刷新缓冲区,这就可能出现这样的情况:程序做了写输出的工作,但写的内容并没有显示在标准输出上,仍然存储在输出缓冲区中等待输出。如果需要使用最后的输出给程序错误定位,则必须确定所有要输出的都已经输出。为了确保用户看到程序实际上处理的所有输出,最好的方法是保证所有的输出操作都显式地调用了 flushendl。如果仅因为缓冲区没有刷新,程序员将浪费大量的时间跟踪调试并没有执行的代码。基于这个原因,输出时应多使用 endl 而非 '\n'。使用 endl 则不必担心程序崩溃时输出是否悬而未决(即还留在缓冲区,未输出到设备中)。

  • 文件的输入和输出

fstream 头文件定义了三种支持文件 IO 的类型:ifstream,由 istream 派生而来,提供读文件的功能;ofstream,由 ostream 派生而来,提供写文件的功能;fstream,由 iostream 派生而来,提供读写同一个文件的功能。

这些类型都由相应的 iostream 类型派生而来,这个事实意味着我们已经知道使用 fstream 类型需要了解的大部分内容了。特别是,可使用 IO 操作符(<<>> )在文件上实现格式化的 IO。fstream 类型除了继承下来的行为外,还定义了两个自己的新操作—— openclose,以及形参为要打开的文件名的构造函数

需要读写文件时,则必须定义自己的对象,并将它们绑定在需要的文件上。假设 ifileofile 是存储希望读写的文件名的 strings 对象,可如下编写代码:

// construct an ifstream and bind it to the file named ifile
ifstream infile(ifile.c_str());
// ofstream output file object to write file named ofile
ofstream outfile(ofile.c_str());

上述代码定义并打开了一对 fstream 对象。infile 是读的流,而 outfile 则是写的流。为 ifstream 或者 ofstream 对象提供文件名作为初始化式,就相当于打开了特定的文件。

ifstream infile;    // unbound input file stream
ofstream outfile; // unbound output file stream

上述语句将 infile 定义为读文件的流对象,将 outfile 定义为写文件的对象。这两个对象都没有捆绑具体的文件。在使用 fstream 对象之前,还必须使这些对象捆绑要读写的文件:

infile.open("in");   // open file named "in" in the current directory
outfile.open("out"); // open file named "out" in the current directory

调用 open 成员函数将已存在的 fstream 对象与特定文件绑定。为了实现读写,需要将指定的文件打开并定位,open 函数完成系统指定的所有需要的操作。

打开文件后,通常要检验打开是否成功,这是一个好习惯:

if (!infile) {
cerr << "error: unable to open input file: "
<< ifile << endl;
return -;
}

fstream 对象一旦打开,就保持与指定的文件相关联。如果要把 fstream 对象与另一个不同的文件关联,则必须先关闭(close)现在的文件,然后打开(open)另一个文件:要点是在尝试打开新文件之前,必须先关闭当前的文件流。open 函数会检查流是否已经打开。如果已经打开,则设置内部状态,以指出发生了错误。接下来使用文件流的任何尝试都会失败。

ifstream infile("in");      // opens file named "in" for reading
infile.close(); // closes "in"
infile.open("next"); // opens file named "next" for reading
  • 清除文件流状态

考虑这样的程序,它有一个 vector 对象,包含一些要打开并读取的文件名,程序要对每个文件中存储的单词做一些处理。假设该 vector 对象命名为 files,程序也许会有如下循环:

// for each file in the vector
while (it != files.end()) {
ifstream input(it->c_str()); // open the file;
// if the file is ok, read and "process" the input
if (!input)
break; // error: bail out!
while(input >> s) // do the work on this file
process(s);
++it; // increment iterator to get next file
}

每一次循环都构造了名为 inputifstream 对象,打开并读取指定的文件。构造函数的初始化式使用了箭头操作符对 it 进行解引用,从而获取 it 当前表示的 string 对象的 c_str 成员。文件由构造函数打开,并假设打开成功,读取文件直到到达文件结束符或者出现其他的错误条件为止。在这个点上,input 处于错误状态。任何读 input 的尝试都会失败。因为 inputwhile 循环的局部变量,在每次迭代中创建。这就意味着它在每次循环中都以干净的状态即 input.good()true,开始使用。

如果希望避免在每次 while 循环过程中创建新流对象,可将 input 的定义移到 while 之前。这点小小的改动意味着必须更仔细地管理流的状态。如果遇到文件结束符或其他错误,将设置流的内部状态,以便之后不允许再对该流做读写操作。关闭流并不能改变流对象的内部状态。如果最后的读写操作失败了,对象的状态将保持为错误模式,直到执行 clear 操作重新恢复流的状态为止。调用 clear 后,就像重新创建了该对象一样

如果打算重用已存在的流对象,那么 while 循环必须在每次循环进记得关闭(close)和清空(clear)文件流:

ifstream input;
vector<string>::const_iterator it = files.begin();
// for each file in the vector
while (it != files.end()) {
input.open(it->c_str()); // open the file
// if the file is ok, read and "process" the input
if (!input)
break; // error: bail out!
while(input >> s) // do the work on this file
process(s);
input.close(); // close file when we're done with it
input.clear(); // reset state to ok
++it; // increment iterator to get next file
}

如果程序员需要重用文件流读写多个文件,必须在读另一个文件之前调用 clear 清除该流的状态

  • 文件模式

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

aaarticlea/png;base64,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" alt="" />

outtruncapp 模式只能用于指定与 ofstreamfstream 对象关联的文件;in 模式只能用于指定与 ifstreamfstream 对象关联的文件。所有的文件都可以用 atebinary 模式打开。ate 模式只在打开时有效:文件打开后将定位在文件尾。以 binary 模式打开的流则将文件以字节序列的形式处理,而不解释流中的字符。默认时,与 ifstream 流对象关联的文件将以 in 模式打开,该模式允许文件做读的操作:与 ofstream 关联的文件则以 out 模式打开,使文件可写。以 out 模式打开的文件会被清空:丢弃该文件存储的所有数据。从效果来看,为 ofstream 对象指定 out 模式等效于同时指定了 outtrunc 模式。

对于用 ofstream 打开的文件,要保存文件中存在的数据,唯一方法是显式地指定 app 模式打开

//  output mode by default; truncates file named "file1"
ofstream outfile("file1");
// equivalent effect: "file1" is explicitly truncated
ofstream outfile2("file1", ofstream::out | ofstream::trunc);
// append mode; adds new data at end of existing file named "file2"
ofstream appfile("file2", ofstream::app);

模式是文件属性而不是流属性

  • 字符串流

iostream 标准库支持内存中的输入/输出,只要将流与存储在程序内存中的 string 对象捆绑起来即可。此时,可使用 iostream 输入和输出操作符读写这个 string 对象。标准库定义了三种类型的字符串流:

istringstream,由 istream 派生而来,提供读 string 的功能;ostringstream,由 ostream 派生而来,提供写 string 的功能;stringstream,由 iostream 派生而来,提供读写 string 的功能。要使用上述类,必须包含 sstream 头文件。

sstream 类型除了继承的操作外,还各自定义了一个有 string 形参的构造函数,这个构造函数将 string 类型的实参复制给 stringstream 对象。对 stringstream 的读写操作实际上读写的就是该对象中的 string 对象。这些类还定义了名为 str 的成员,用来读取或设置 stringstream 对象所操纵的 string 值。

aaarticlea/png;base64,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" alt="" />

前面已经见过以每次一个单词或每次一行的方式处理输入的程序。第一种程序用 string 输入操作符,而第二种则使用 getline 函数。然而,有些程序需要同时使用这两种方式:有些处理基于每行实现,而其他处理则要操纵每行中每个单词。可用 stringstreams 对象实现:

string line, word;      // will hold a line and word from input, respectively
while (getline(cin, line)) { // read a line from the input into line
// do per-line processing
istringstream stream(line); // bind to stream to the line we read
while (stream >> word){ // read a word from line
// do per-word processing
}
}

这里,使用 getline 函数从输入读取整行内容。然后为了获得每行中的单词,将一个 istringstream 对象与所读取的行绑定起来,这样只需要使用普通的 string 输入操作符即可读出每行中的单词

stringstream 对象的一个常见用法是,需要在多种数据类型之间实现自动格式化时使用该类类型。例如,有一个数值型数据集合,要获取它们的 string 表示形式,或反之。sstream 输入和输出操作可自动地把算术类型转化为相应的 string 表示形式,反过来也可以

int val1 = , val2 = ;
ostringstream format_message;
// ok: converts values to a string representation
format_message << "val1: " << val1 << "\n"
<< "val2: " << val2 << "\n";

这里创建了一个名为 format_messageostringstream 类型空对象,并将指定的内容插入该对象。重点在于 int 型值自动转换为等价的可打印的字符串。重点在于 int 型值自动转换为等价的可打印的字符串。format_message 的内容是以下字符:

val1: \nval2: 

相反,用 istringstreamstring 对象,即可重新将数值型数据找回来。读取 istringstream 对象自动地将数值型数据的字符表示方式转换为相应的算术值

// str member obtains the string associated with a stringstream
istringstream input_istring(format_message.str());
string dump; // place to dump the labels from the formatted message
// extracts the stored ascii values, converting back to arithmetic types
input_istring >> dump >> val1 >> dump >> val2;
cout << val1 << " " << val2 << endl; // prints 512 1024

这里使用 。str 成员获取与之前创建的 ostringstream 对象关联的 string 副本。再将 input_istringstring 绑定起来。在读 input_istring 时,相应的值恢复为它们原来的数值型表示形式。

因为输入操作符读取的是所有类型的值,因此读入的对象类型必须和由 stringstream 读入的值的类型一致。在本例中,input_istring 分成四个部分:string 类型的值 val1,接着是 512,然后是 string 类型的值 val2,最后是 1024(对应着input_istring >> dump >> val1 >> dump >> val2;格式)。一般情况下,使用输入操作符读 string 时,空白符将会忽略。于是,在读与 format_message 关联的 string 时,忽略其中的换行符

标准IO库的更多相关文章

  1. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  2. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  3. 文件IO函数和标准IO库的区别

    摘自 http://blog.chinaunix.net/uid-26565142-id-3051729.html 1,文件IO函数,在Unix中,有如下5个:open,read,write,lsee ...

  4. C++ Primer 读书笔记: 第8章 标准IO库

    第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于 ...

  5. 高级UNIX环境编程5 标准IO库

    标准IO库都围绕流进进行的 <stdio.h><wchar.h> memccpy 一般用汇编写的 ftell/fseek/ftello/fseeko/fgetpos/fsetp ...

  6. c++ primer 学习杂记3【标准IO库】

    第8章 标准IO库 发现书中一个错误,中文版p248 流状态的查询和控制,举了一个代码例子: int ival; // read cin and test only for EOF; loop is ...

  7. 18、标准IO库详解及实例

    标准IO库是由Dennis Ritchie于1975年左右编写的,它是Mike Lestbain写的可移植IO库的主要修改版本,2010年以后, 标准IO库几乎没有进行什么修改.标准IO库处理了很多细 ...

  8. 第十三篇:带缓冲的IO( 标准IO库 )

    前言 在之前,学习了 read write 这样的不带缓冲IO函数. 而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 wri ...

  9. C5 标准IO库:APUE 笔记

    C5 :标准IO库 在第三章中,所有IO函数都是围绕文件描述符展开,文件描述符用于后续IO操作.由于文件描述符相关的操作是不带缓冲的IO,需要操作者本人指定缓冲区分配.IO长度等,对设备环境要求一定的 ...

  10. 带缓冲的IO( 标准IO库 )

    前言 在之前,学习了 read write 这样的不带缓冲IO函数.而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 writ ...

随机推荐

  1. Python基础(六)-内置函数

      map().filter().reduce() map(func,iterator) --> filter(func,iterator) --> reduce(func,iterato ...

  2. stm32 串口乱码的解决

    版权声明:本文为博主原创文章. 前几天在中移物联网申请了一个迷你开发板,运行官方提供的程序,感觉板子是正常的.但是自己写的程序能够刷到板子上,但是串口却是乱码.官方和我的额程序都是用的库函数的方式写的 ...

  3. perl Mail::Sender模块发送邮件

    #!/usr/bin/perl -w use strict; use Mail::Sender; ; ){ my $sender = Mail::Sender->new({ smtp => ...

  4. power oj 2480 放积木[二进制状压DP]

    题目链接[https://www.oj.swust.edu.cn/problem/show/2480] 题意:中文题目. 题解:二进制状态转移+坏点判断. #include<cstdio> ...

  5. sql语句的学习(2)

    7.统计:学号.姓名.语文.数学.英语.总分.平均成绩 8.列出各门课程的平均成绩.课程,平均成绩 9.列出数学成绩的排名(要求显示字段:学号,姓名,成绩,排名) 10.列出数学成绩在2-3名的学生( ...

  6. 淘淘商城_day05_课堂笔记

    今日大纲 学习Redis 使用Redis完成项目中缓存需求 实现商品详情页功能 缓存的需求 大广告位数据无需每次查询后台系统的接口,可以在前台系统添加缓存,提高访问首页的速度. 商品类目的数据也可以缓 ...

  7. 使用 Spark MLlib 做 K-means 聚类分析[转]

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice4/ 引言 提起机器学习 (Machine Lear ...

  8. HTML <base> 标签的 href 属性

    为页面上所有相对 URL 规定基准 URL: <head> <base href="http://www.w3school.com.cn/i/" /> &l ...

  9. 文件断点续传原理与实现—— ESFramework 通信框架4.0 进阶(12)

    在ESFramework通信框架 4.0 快速上手(13) -- 文件传送,如此简单一文的详细介绍和ESFramework通信框架 4.0 快速上手(14) -- 聊天系统Demo,增加文件传送功能( ...

  10. Excel教程(11) - 查找和引用函数

    ADDRESS 用途:以文字形式返回对工作簿中某一单元格的引用.    语法: sheADDRESS(row_num,column_num,abs_num,a1,et_text) 参数:Row_num ...