C++/File/File Read
Содержание
Demonstrate gcount().
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream out("test", ios::out | ios::binary);
if(!out) {
cout << "Cannot open output file.\n";
return 1;
}
double nums[4] = {1.1, 2.2, 3.3, 4.4 };
out.write((char *) nums, sizeof(nums));
out.close();
ifstream in("test", ios::in | ios::binary);
if(!in) {
cout << "Cannot open input file.\n";
return 1;
}
in.read((char *) &nums, sizeof(nums));
int i;
for(i = 0; i <4; i++)
cout << nums[ i ] << " ";
cout << "\n";
cout << in.gcount() << " characters read\n";
in.close();
return 0;
}
Demonstrate peek() in ifstream
#include <iostream>
#include <fstream>
#include <cctype>
using namespace std;
int main()
{
char ch;
ofstream out("test", ios::out | ios::binary);
if(!out) {
cout << "Cannot open output file.\n";
return 1;
}
char str[80], *p;
out << 123 << "this is a test" << 23;
out << "Hello there!" << 99 << "sdf" << endl;
out.close();
ifstream in("test", ios::in | ios::binary);
if(!in) {
cout << "Cannot open input file.\n";
return 1;
}
do {
p = str;
ch = in.peek();
if(isdigit(ch)) {
while(isdigit(*p=in.get()))
p++;
in.putback(*p);
*p = "\0";
cout << "Integer: " << atoi(str);
}
else if(isalpha(ch)) {
while(isalpha(*p=in.get())) p++;
in.putback(*p);
*p = "\0";
cout << "String: " << str;
}
else
in.get();
cout << "\n";
} while(!in.eof());
in.close();
return 0;
}
Demonstrate seekg().
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(int argc, char *argv[])
{
char ch;
if(argc!=3) {
cout << "Usage: LOCATE <filename> <loc>\n";
return 1;
}
ifstream in(argv[1], ios::in | ios::binary);
if(!in) {
cout << "Cannot open input file.\n";
return 1;
}
in.seekg(atoi(argv[2]), ios::beg);
while(!in.eof()) {
in.get(ch);
cout << ch;
}
in.close();
return 0;
}
Read file content
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream in("test", ios::in | ios::binary);
if(!in) {
cout << "Cannot open input file.\n";
return 1;
}
double num;
char str[80];
in.read((char *) &num, sizeof(double));
in.read(str, 14);
str[14] = "\0"; // null terminate str
cout << num << " " << str;
in.close();
return 0;
}
Read formatted data from a file.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int i, n;
double d;
string str;
ifstream fin("test.dat");
if(!fin) {
cout << "Cannot open file.\n";
return 1;
}
fin >> i;
fin >> n;
fin >> d;
fin >> str;
fin.close();
if(!fin.good()) {
cout << "A file error occurred.";
return 1;
}
cout << i << " " << n << " " << d << " " << str << "\n";
return 0;
}
Use getline() to read a string that contains spaces.
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char str[80];
cout << "Enter your name: ";
cin.getline(str, 79);
cout << str << "\n";
return 0;
}
Write char to a file
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
char ch;
if(argc!=2) {
cout << "Usage: WRITE <filename>\n";
return 1;
}
ofstream out(argv[1], ios::out | ios::binary);
if(!out) {
cout << "Cannot open file.\n";
return 1;
}
cout << "Enter a $ to stop\n";
do {
cout << ": ";
cin.get(ch);
out.put(ch);
} while (ch!="$");
out.close();
return 0;
}
Write unsigned char to a file and read it back
#include <iostream>
#include <fstream>
using namespace std;
main(void)
{
int n[5] = {1, 2, 3, 4, 5};
int i;
ofstream out("test");
if(!out) {
cout << "Cannot open file";
return 1;
}
out.write((char *) &n, sizeof n);
out.close();
for(i=0; i<5; i++)
n[i] = 0;
ifstream in("test");
in.read((char *) &n, sizeof n);
for(i=0; i<5; i++) // show values read from file
cout << n[i] << " ";
in.close();
return 0;
}