文件输入输出

iostream:定义了读写流的基本类型
fstream:定义了读写命名文件的基本类型
sstream:定义了读写内存string对象的类型
我们不能拷贝或对IO对象赋值。进行IO操作的函数通常以引用方式传递和返回流。读写一个IO对象会改变其状态,因此传递和返回的引用不能是从const的。
文件输入输出:
1、什么时候使用文件输入输出?
答:当我们有需求读写一个文件时。
2、怎样进行文件输入输出?
答:利用ifstream,ofstream,fstream这些类,并使用IO运算符(<<和>>)来读写文件,还可以用getline从一个ifstream读取一行数据。
3、实例?
目标一:读取一个文件并打印出来。

int main()
{
    ifstream read("E:information/Query.txt");
    string str;
    while (read >> str)
        cout << str << " ";
    return 0;
}

若想要read读取另一个文件,必须先关闭原先绑定的文件:

    read.close();
    read.open("E:information/Sales_data.txt");

目标二:向一个文件中写入一段话。

int main()
{
    ofstream write("E:information/test.txt");
    write << "hello world" << endl;
    write.close();
    return 0;
}

打开此文件,若没有,创建此文件并向其写入“hello world”。
首先,ostream是一个类,write便是类的对象,括号里的参数传递给ofstream的构造函数。通过<<运算符(继承自iostream)便可打印输出流中的内容了。

目标三:以读模式打开一个文件,将其内容读入一个string的vector中,将每一行作为一个独立的元素存于vector中。

void read(const string &str, vector<string> &vi);
int main()
{
    vector<string> vi;
    read("E:information/Query.txt",vi);
    for (const auto &num : vi)
        cout << num << endl;
    return 0;
}
void read(const string &str,vector<string> &vi)
{
    ifstream in(str);
    if (in) {
        string line;
        while (getline(in, line)) vi.push_back(line);
    }
}

将文件路径传递给read的形参string &str,在read中创建输入流,并按行读取至vector中。

目标四:以out模式打开数据会丢弃已有数据。

ofstream out;
    out.open("E:information/Query.txt");

灾难,Query.txt里的内容全空了!以写方式打开文件,即用ofstream打开文件,一定要加ofstream::app!就像下面这样。

ofstream out;
    out.open("E:information/Query.txt",ofstream::app);

http://blog.csdn.net/btooth/article/details/995097

部分参考以上链接所指博客。

你可能感兴趣的:(iostream)