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
部分参考以上链接所指博客。