C++/File/fstream
Содержание
Demonstrate File random access.
<source lang="cpp">
- include <iostream>
- include <fstream>
- include <cstdlib>
using namespace std;
int main(int argc, char *argv[]) {
if(argc != 3) { cout << "Usage: CHANGE <filename> <byte>\n"; return 1; } fstream out(argv[1], ios::in | ios::out | ios::binary); if(!out) { cout << "Cannot open file.\n"; return 1; } out.seekp(atoi(argv[2]), ios::beg); out.put("X"); out.close(); return 0;
}
</source>
File Stream Objects as Function Arguments
<source lang="cpp">
- include <fstream>
- include <iostream>
- include <string>
using namespace std; bool writeFile (ofstream&, char*); bool readFile (ifstream&, char*); int main () {
string data; bool status; ofstream outfile; status = writeFile(outfile, "students.dat"); if (!status) { cout << "File could not be opened for writing\n"; cout << "Program terminating\n"; return 0; } else { cout << "Writing to the file" << endl; cout << "Enter class name: "; getline(cin, data); outfile << data<< endl; cout << "Enter number of students: "; cin >> data; cin.ignore(); outfile << data<< endl; outfile.close(); } ifstream infile; status = readFile(infile, "students.dat"); if (!status) { cout << "File could not be opened for reading\n"; cout << "Program terminating\n"; return 0; } else { cout << "Reading from the file" << endl; getline(infile, data); while(!infile.fail()) { cout << data << endl; getline(infile, data); } infile.close(); } return 0;
} bool writeFile (ofstream& file, char* strFile) {
file.open(strFile); if (file.fail()) return false; else return true;
} bool readFile (ifstream& ifile, char* strFile) {
ifile.open(strFile); if (ifile.fail()) return false; else return true;
}
</source>
fstream seekp: Seek file pointer position
<source lang="cpp">
- include <iostream>
- include <fstream>
- include <cstdlib>
using namespace std; int main(int argc, char *argv[]) {
if( argc != 4) { cout << "Usage: CHANGE <filename> <character> <char>\n"; return 1; } fstream out(argv[1], ios::in | ios::out | ios::binary); if(!out) { cout << "Cannot open file."; return 1; } out.seekp(atoi(argv[ 2 ]), ios::beg); out.put(*argv[ 3 ]); out.close(); return 0;
}
</source>
Reverse file content
<source lang="cpp">
- include <iostream>
- include <fstream>
- include <cstdlib>
using namespace std; int main(int argc, char *argv[]) {
if(argc!=3) { cout << "Usage: Reverse <filename> <num>\n"; return 1; } fstream inout(argv[1], ios::in | ios::out | ios::binary); if(!inout) { cout << "Cannot open input file.\n"; return 1; } long e, i, j; char c1, c2; e = atol(argv[2]); for(i = 0, j = e; i < j; i++, j--) { inout.seekg(i, ios::beg); inout.get(c1); inout.seekg(j, ios::beg); inout.get(c2); inout.seekp(i, ios::beg); inout.put(c2); inout.seekp(j, ios::beg); inout.put(c1); } inout.close(); return 0;
}
</source>
Reverses the first N characters within a file
<source lang="cpp">
- include <iostream>
- include <fstream>
- include <cstdlib>
using namespace std; int main(int argc, char *argv[]) {
long n, i, j; char ch1, ch2; if(argc!=3) { cout << "Usage: Reverse <filename> <num>\n"; return 1; } fstream finout(argv[1], ios::in | ios::out | ios::binary); if(!finout) { cout << "Cannot open input file.\n"; return 1; } n = atol(argv[2]) - 1; for(i=0, j=n; i < j; ++i, --j) { finout.seekg(i, ios::beg); finout.get(ch1); finout.seekp(j, ios::beg); finout.put(ch1); if(!finout.good()) { cout << "Error reading or writing characters."; finout.clear(); break; } } finout.close(); if(!finout.good()) { cout << "A file error occurred."; return 1; } return 0;
}
</source>
To read or write to a file, you include <fstream>
<source lang="cpp">
- include <fstream>
int main() {
using namespace std; int intValue; float realValue; ifstream inData; ofstream outData; inData.open("input.dat"); outData.open("output.dat"); inData >> intValue; inData >> realValue; outData << "The input values are " << intValue << " and " << realValue << endl; return 0 ;
}
</source>