128.C++文件操作小结

打开后缀参数

 

 

  1 #include <fstream>
  2 #include <iostream>
  3 using namespace std;
  4 
  5 //文本读写
  6 //文件写入
  7 void main1()
  8 {
  9     //写入到文件 in读o写
 10     //创建一个输出流
 11     ofstream out;
 12     //输出到文件
 13     out.open("C:\\123.txt");
 14     out << "hello file" << endl;
 15     out.close();
 16     system("C:\\123.txt");
 17     cin.get();
 18 }
 19 
 20 //文件读取
 21 void main2()
 22 {
 23     //创建一个输出流
 24     ifstream in;
 25     in.open("C:\\123.txt");
 26     char str[256]{ 0 };
 27     //in >> str;
 28     //从文件读取
 29     in.getline(str, 256);
 30     in.close();
 31     cout << str << endl;
 32     cin.get();
 33     system("C:\\123.txt");
 34 }
 35 
 36 //文件打开方式,追加
 37 void main3()
 38 {
 39     //写入到文件 in读o写
 40     //创建一个输出流
 41     ofstream out;
 42     //输出到文件(追加模式)
 43     out.open("C:\\123.txt",ios::app);
 44     out << " hello world" << endl;
 45     out.close();
 46     system("C:\\123.txt");
 47     cin.get();
 48 }
 49 
 50 
 51 //二进制文件读写
 52 struct info
 53 {
 54     char name[10];
 55     int id;
 56     double price;
 57 };
 58 
 59 //把结构体的信息按二进制方式写入文件
 60 void main4()
 61 {
 62     struct info infs[3] = { {"xiaowang1",1,100},{ "xiaowang2",2,200 },{ "xiaowang3",3,300 } };
 63     //二进制方式读
 64     ofstream fout("bin.bin", ios::binary);
 65     //内存写入到磁盘 (必须要转换成char *)
 66     fout.write((char *)infs, sizeof(infs));
 67     fout.close();
 68 
 69     struct info infs2[3];
 70     //二进制方式写(必须要转换成char *)
 71     ifstream fin("bin.bin",ios::binary);
 72     fin.read((char*)infs2, sizeof(infs2));
 73     fin.close();
 74     for (auto i : infs2)
 75     {
 76         cout << i.id << i.name << i.price << endl;
 77     }
 78     system("pause");
 79 }
 80 
 81 //把结构体的信息按文本方式写入到文件
 82 void main5()
 83 {
 84     struct info infs[3] = { { "xiaowang1",1,100 },{ "xiaowang2",2,200 },{ "xiaowang3",3,300 } };
 85 
 86     //文本文件读写
 87     ofstream fout("1.txt", ios::out|ios::app);
 88 
 89     for (auto i : infs)
 90     {
 91         fout << i.name << i.price << i.id << endl;
 92     }
 93 
 94     fout.close();
 95 
 96     ifstream fin("1.txt");
 97     for (int i = 0; i < 3; i++)
 98     {
 99         char str[255]{ 0 };
100         fin.getline(str, 254);
101         cout << str << endl;
102     }
103     fin.close();
104     system("pause");
105 }
106 
107 //文件指针移动到指定位置读seekg
108 void main6()
109 {
110     ofstream fout("hello.txt");
111     if (!fout)
112     {
113         cout << "操作失败";
114     }
115 
116     fout << "123456789abcdefghijklmnopqrstuvwxyz";
117     fout.close();
118 
119     ifstream fin("hello.txt");
120     if (fin.fail())
121     {
122         cout << "操作失败";
123     }
124     //从开始往后移动9个位置开始读
125     fin.seekg(9, ios::beg);
126     char ch;
127     while (fin.get(ch))
128     {
129         cout << ch;
130     }
131     fin.close();
132     system("pause");
133 }
134 
135 //追加方式文件指针移动到指定位置写(失效)
136 void main7()
137 {
138     char ch;
139     ifstream fin("hello.txt");
140     while (fin.get(ch))
141     {
142         cout << ch;
143     }
144     fin.close();
145 
146     //以追加的方式的打开
147     ofstream fout("hello.txt",ios::app);
148     //从头开始往后移动五个位置(到第五个位置之后)
149     //如果是追加移动无效
150     fout.seekp(5, ios::beg);
151     fout << "ceshiceshi";
152     fout.close();
153     system("hello.txt");
154     system("pause");
155 }
156 
157 //读写方式文件指针移动到指定位置写(seekp)
158 void main()
159 {
160     char ch;
161     ifstream fin("hello.txt");
162     while (fin.get(ch))
163     {
164         cout << ch;
165     }
166     fin.close();
167 
168     //以读写的方式的打开(会造成重写)
169     ofstream fout("hello.txt", ios::in | ios::out);
170     //从头开始往后移动五个位置(到第五个位置之后)
171     //如果是追加移动无效
172     fout.seekp(5, ios::beg);
173     fout << "ceshiceshi";
174     fout.close();
175     system("hello.txt");
176     system("pause");
177 }

 

posted @ 2018-03-21 23:57  喵小喵~  阅读(256)  评论(0编辑  收藏  举报