Latest web development tutorials
×

C++ หลักสูตร

C++ หลักสูตร C++ แนะนำโดยย่อ C++ การตั้งค่าสภาพแวดล้อม C++ ไวยากรณ์พื้นฐาน C++ หมายเหตุ C++ ชนิดข้อมูล C++ ประเภทตัวแปร C++ ขอบเขตตัวแปร C++ คงที่ C++ ประเภทการปรับเปลี่ยน C++ ประเภทการจัดเก็บ C++ ผู้ประกอบการ C++ การไหลเวียน C++ ผู้พิพากษา C++ ฟังก์ชัน C++ ดิจิตอล C++ แถว C++ เชือก C++ ชี้ C++ อ้างอิง C++ วันที่และเวลา C++ เอาท์พุทหรือ Basic Input C++ โครงสร้างข้อมูล

C++ เชิงวัตถุ

C++ คลาสและวัตถุ C++ สืบทอด C++ ผู้ประกอบการมากเกินไปและการทำงานมากเกินไป C++ polymorphism C++ ข้อมูลที่เป็นนามธรรม C++ ข้อมูล encapsulation C++ อินเตอร์เฟซ(ระดับนามธรรม)

C++ การสอนที่ทันสมัย

C++ แฟ้มและสตรีม C++ การจัดการข้อยกเว้น C++ หน่วยความจำแบบไดนามิก C++ namespaces C++ แบบ C++ preprocessor C++ การประมวลผลสัญญาณ C++ multithreading C++ Web โครงการ

C++ กรุ

C++ STL หลักสูตร C++ ห้องสมุดมาตรฐาน C++ ทรัพยากรที่มีประโยชน์

C ++ ไฟล์และลำธาร

จนถึงขณะนี้เราได้ใช้ห้องสมุดiostream มาตรฐานซึ่งมี CINและวิธีการสตรีมศาลจะใช้ในการอ่านจากอินพุตมาตรฐานและเขียนไปยังกระแสออกมาตรฐาน

กวดวิชานี้จะแสดงวิธีการอ่านและเขียนไฟล์จากกระแสการสตรีมไฟล์ นั่นคือสิ่งที่อีก c ++ มาตรฐานห้องสมุดfstream จะกำหนดสามประเภทข้อมูลใหม่:

数据类型 描述
ofstream 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream 该数据类型表示输入文件流,用于从文件读取信息。
fstream 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

หากต้องการยื่นจัดการใน C ++ คุณต้องรวมไฟล์ส่วนหัวใน C ++ ไฟล์โค้ด <iostream> และ <fstream>

เปิดแฟ้ม

ก่อนที่จะอ่านข้อมูลจากไฟล์หรือเขียนไฟล์ก่อนอื่นคุณต้องเปิดแฟ้มofstream และ fstreamวัตถุสามารถใช้ในการเปิดไฟล์สำหรับการเขียนถ้าคุณจะต้องเปิดไฟล์สำหรับการอ่านใช้วัตถุifstream

นี่คือเปิด () ฟังก์ชันไวยากรณ์มาตรฐานเปิด () ฟังก์ชั่นนี้เป็นสมาชิกของ fstream, ifstream และ ofstream วัตถุ

void open(const char *filename, ios::openmode mode);

ที่นี่เปิด () ฟังก์ชันสมาชิกของพารามิเตอร์แรกที่ระบุชื่อและที่ตั้งของไฟล์ที่คุณต้องการที่จะเปิดและพารามิเตอร์ที่สองกำหนดไฟล์จะถูกเปิดโหมด

模式标志 描述
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

คุณสามารถใช้การรวมกันของสองคนหรือมากกว่าของโหมดดังกล่าวข้างต้น ตัวอย่างเช่นถ้าคุณต้องการที่จะเปิดไฟล์ในโหมดการเขียนและต้องการที่จะตัดไฟล์เพื่อป้องกันไฟล์ที่มีอยู่แล้วคุณสามารถใช้ไวยากรณ์ต่อไปนี้:

ofstream outfile;
outfile.open("file.dat", ios::out | ios::trunc );

ในทำนองเดียวกันคุณถ้าคุณต้องการที่จะเปิดไฟล์สำหรับการอ่านและการเขียนคุณสามารถใช้ไวยากรณ์ต่อไปนี้:

fstream  afile;
afile.open("file.dat", ios::out | ios::in );

ปิดแฟ้ม

เมื่อโปรแกรม C ++ ยุติก็จะปิดโดยอัตโนมัติรีเฟรชลำธารปล่อยจัดสรรหน่วยความจำทั้งหมดและปิดไฟล์ที่เปิดอยู่ทั้งหมด แต่โปรแกรมเมอร์ควรพัฒนานิสัยที่ดีก่อนที่โปรแกรมจะยุติปิดไฟล์ที่เปิดอยู่ทั้งหมด

นี่คือใกล้ () ฟังก์ชันไวยากรณ์มาตรฐานใกล้ () ฟังก์ชั่นนี้เป็นสมาชิกของ fstream, ifstream และ ofstream วัตถุ

void close();

เขียนไปยังแฟ้ม

ในการเขียนโปรแกรมภาษา C ++ เราจะใช้ผู้ประกอบการสตรีมแทรก (<<) ในการเขียนข้อมูลไปยังแฟ้มเช่นเดียวโดยใช้ข้อมูลที่ส่งออกไปยังผู้ประกอบการบนหน้าจอเดียวกัน แต่ที่แตกต่างก็คือว่าที่นี่คุณกำลังใช้ofstream หรือวัตถุ fstreamแทนของวัตถุศาล

อ่านไฟล์

ในการเขียนโปรแกรมภาษา C ++ เราจะใช้ดำเนินการแยกสตรีม (>>) เพื่ออ่านข้อมูลจากไฟล์เช่นเดียวกับการใช้ข้อมูลของท่านผู้ประกอบการจากแป้นพิมพ์ แต่ที่แตกต่างก็คือว่าที่นี่คุณกำลังใช้fstream ifstreamหรือวัตถุแทนของวัตถุCIN

อ่านและการเขียนตัวอย่าง

ต่อไปนี้โปรแกรม C ++ เพื่อเปิดไฟล์ในโหมดอ่านการเขียน หลังจากเขียนไปยังแฟ้มข้อมูล afile.dat ป้อนโดยผู้ใช้โปรแกรมอ่านข้อมูลจากไฟล์และส่งออกไปยังหน้าจอ:

#include <fstream>
#include <iostream>
using namespace std;
 
int main ()
{
    
   char data[100];

   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");

   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);

   // 向文件写入用户输入的数据
   outfile << data << endl;

   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // 再次向文件写入用户输入的数据
   outfile << data << endl;

   // 关闭打开的文件
   outfile.close();

   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 

   // 在屏幕上写入数据
   cout << data << endl;
   
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 

   // 关闭打开的文件
   infile.close();

   return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการจะผลิตปัจจัยการผลิตต่อไปนี้และเอาท์พุท:

$./a.out
Writing to the file
Enter your name: Zara
Enter your age: 9
Reading from the file
Zara
9

ตัวอย่างข้างต้นใช้ฟังก์ชันวัตถุ CIN เพิ่มเติมเช่น getline () ฟังก์ชันอ่านบรรทัดจากภายนอกไม่สนใจ () ฟังก์ชันจะอ่านคำสั่งก่อนที่จะออกจากตัวละครพิเศษจะถูกละเว้น

ตัวชี้ตำแหน่งของไฟล์

istream และ ostreamให้ฟังก์ชั่นสำหรับสมาชิกตำแหน่งตำแหน่งของไฟล์ตัวชี้ เหล่านี้รวมถึงฟังก์ชั่นเกี่ยวกับสมาชิกของ istreamseekg ( "ขอได้รับ") และใน seekpostream( "การแสวงหาใส่")

seekp seekg และอาร์กิวเมนต์มักจะเป็นจำนวนเต็มยาว พารามิเตอร์ที่สองสามารถใช้ในการกำหนดทิศทางของการค้นหา หาทิศทางสามารถiOS :: Beg (ค่าเริ่มต้นตำแหน่งจากจุดเริ่มต้นของสตรีม) ก็สามารถเป็น iOS :: CUR (ตำแหน่งจากตำแหน่งปัจจุบันของกระแส)ก็สามารถเป็นiOS :: จบ (จากจุดสิ้นสุดของกระแสจะเริ่มต้นการวางตำแหน่ง)

ตัวชี้ตำแหน่งของไฟล์เป็นค่าจำนวนเต็มที่ระบุจำนวนไบต์จากจุดเริ่มต้นของไฟล์ไปยังตำแหน่งของตัวชี้ นี่เป็นเป้าหมาย "รับ" อินสแตนซ์ชี้ตำแหน่งของไฟล์:

// 定位到 fileObject 的第 n 个字节(假设是 ios::beg)
fileObject.seekg( n );

// 把文件的读指针从 fileObject 当前位置向后移 n 个字节
fileObject.seekg( n, ios::cur );

// 把文件的读指针从 fileObject 末尾往回移 n 个字节
fileObject.seekg( n, ios::end );

// 定位到 fileObject 的末尾
fileObject.seekg( 0, ios::end );