C ++:读取数据和输出数据

时间:2013-09-13 00:29:04

标签: c++ ostream istream

我正在尝试编写两种方法。一,ReadData(istream&)读取学生的ID号,名字和姓氏,10个程序分数,中期和考试分数(最后两个整数),如果所有数据都被成功读取则返回true,否则返回false,一个WriteData (ostream&)以上面列出的相同顺序将读入的数据写入新文件。

我是一个全新的文件阅读和写作所以任何和所有的帮助非常感谢。 我使用的数据看起来像这样......(由姓名和分数组成)

10601   ANDRES HYUN 88 91 94 94 89 84 94 84 89 87 89 91 
10611   THU ZECHER 83 79 89 87 88 88 86 81 84 80 89 81 
10622   BEVERLEE WAMPOLE 95 92 91 96 99 97 99 89 94 96 90 97 
10630   TRUMAN SOVIE 68 73 77 76 72 71 72 77 67 68 72 75 

到目前为止,我有......

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

ifstream ReadData;
ReadData.open("filename.txt");
if ReadData... ///Not sure how to make it return true or false 
ReadData.close();

ostream WriteData;
for (k=0,k<101,k++)
//how do you output to a new file from here?
WriteData.close();

2 个答案:

答案 0 :(得分:0)

对于文件阅读:

if(ReadData.is_open()) .... // check if file is open

输出:就像cout一样: 与输入一样,您必须先.open(..)新文件才能在其中书写

ofstream WriteData;
WriteData.open("Output.txt");
WriteData << "Hello World!\n"; //Prints Hello World!

答案 1 :(得分:0)

使用它们来更好地控制(句柄可以是ReadData或WriteData e.t.c):

if( handle.is_open() ) .. // checks if file is open or closed
if( handle.good() ) .. // checks if stream is ready for input/output 
if( handle.bad() ) .. // checks if read/write operation failed
if( handle.fail() ) .. // same as bad, but catches format error
if( handle.eof() ) .. // returns true if opened file has reached the "end of file"

输出数据的可能方法:

WriteData.write(buffer, size); // char *buffer, int size (of buffer)

另:

for(int i = 0; i<size; ++i) WriteData<<buffer[i];

如果数据是字符串,您可以这样做:

WriteData << str;

关于c ++和文件有一个很棒的教程here