当前位置:网站首页>STL tutorial 4- input / output stream and object serialization

STL tutorial 4- input / output stream and object serialization

2022-06-25 07:41:00 Sleepy snail

standard I/O= The standard input + standard output
file I/O= File input + File output

One 、 Standard I / O stream

 Insert picture description here
cout Global object , Has been associated with the display
 Insert picture description here
cerr There is no buffer ,clog There are buffers ,cin and cout There are also buffers

cin.peek(); Peeping into the buffer , Does not take from the buffer
cin.putback() Use is to use the front get perhaps getline Function to read characters from the input stream ch Return to the input stream , Insert to current pointer position

cout<<flush()// Refresh buffer
cout.put(‘a’).put(‘a’);// Output a character and support chain programming
cout.write(“aaa”,strlen(“aaa”));

Format output

1、 The way member methods
 Insert picture description here
Code

void test06() {
    

	int number = 10;
	// The pattern of member methods 
	cout.unsetf(ios::dec);// Uninstall the default 10 Binary output mode 
	cout.setf(ios::oct);// Set to octal output 
	cout << number<<endl;
	cout.setf(ios::showbase);// Show some hidden contents 
	cout << number<<endl;
	cout.unsetf(ios::oct);// Unload octal 
	cout.setf(ios::hex);// Set to hexadecimal 
	cout << number << endl;
	cout.width(10);// Set bit width 
	cout.fill('*');// Set content fill 
	cout << number << endl;
	cout.setf(ios::left);// Set left alignment 
	cout << number << endl;

}

2、 Through the controller
Need to include header file #include
 Insert picture description here

	int number2 = 10;
	cout << hex   // Set to 16 Base number 
		<< resetiosflags(ios::showbase)// Set the display symbol bit 
		<< setw(10)// Set the width to 10
		<< setfill('$')// Set the padding to $
		<<setiosflags(ios::left)
		<< number2
		<< endl;

Two 、 File operations

File read

Need to include header file #include < fstream >// File read and write
There are two ways to define file objects ,
1、ifstream ism(filePath,ios::in);
2、ifstream ism;
ism.open(filePath, ios::in);

	const char* filePath = "C:\\Users\\admin\\Desktop\\source.txt";
	ifstream ism(filePath,ios::in);// Open the file in read-only mode 

   // Or define an object , Open the file as a member of the object 
	/*ifstream ism; ism.open(filePath, ios::in);*/

	// Here, the object must be overloaded 
	if (!ism) {
    
		cout << " fail to open file " << endl;
	}
	// Reading documents   Thanks to the establishment of the pipeline 
	char ch;
	while ( ism.get(ch))
	{
    
		cout << ch;
	}
	// Finished closing files 
	ism.close();

File is written to

Defining the file write object is the same as defining the file read format
ofstream osm(targetPath, ios::out | ios::app); // have only out It's overlay mode , Add the back | ios::app It's the append mode
rearwards osm.put(ch); Add elements to it

void test07() {
    
	
	const char* filePath = "C:\\Users\\admin\\Desktop\\source.txt";
	const char* targetPath = "C:\\Users\\admin\\Desktop\\target.txt";
	ifstream ism(filePath,ios::in);// Open the file in read-only mode 
	ofstream osm(targetPath, ios::out | ios::app); // have only out It's overlay mode , Plus the following is the append mode 

   // Or define an object , Open the file as a member of the object 
	/*ifstream ism; ism.open(filePath, ios::in);*/

	// Here, the object must be overloaded 
	if (!ism) {
    
		cout << " fail to open file " << endl;
	}
	// Reading documents   Thanks to the establishment of the pipeline 
	char ch;
	while ( ism.get(ch))
	{
     
		cout << ch;
		osm.put(ch);
	}
	// Finished closing files 
	ism.close();
	osm.close();


}

Binary mode read / write

Create a new one Person class take p1 and p2 Write to file p1 and p2 Is stored in binary form , The common text mode reading mentioned above is actually stored in binary form
Even garbled code is stored in binary form window Go to carriage return and line feed /r/n Two symbols are used to mark the end of the line linux Just wrap on as a newline /n sign
Read files in text mode , Will automatically change the /r/n Switch to /n, Writing a file will /n Switch to /r/n
But in linxu It is the same in both text mode and binary mode

 Insert picture description here
 Insert picture description here
 Insert picture description here
 Insert picture description here

summary

Files are stored in binary mode , Even newly created objects in memory are in binary form , Then you can write the object to the file , The difference between opening files in text mode and binary mode is ,window Go to carriage return and line feed /r/n Two symbols are used to mark the end of the line ,linux Just wrap on as a newline /n sign . Read files in text mode , Will automatically change the /r/n Switch to /n, Writing a file will /n Switch to /r/n, But in linux It is the same in both text mode and binary mode

原网站

版权声明
本文为[Sleepy snail]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/176/202206250522150552.html