Rumah >pembangunan bahagian belakang >C++ >Bolehkah Anda Langsung Melompat ke Baris Tertentu dalam Fail Teks Menggunakan C fstream?

Bolehkah Anda Langsung Melompat ke Baris Tertentu dalam Fail Teks Menggunakan C fstream?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 12:58:29765semak imbas

Can You Directly Jump to a Specific Line in a Text File Using C   fstream?

Mencari Baris Khusus dalam Fail Teks dengan C

Dengan pustaka fstream dalam C , ia menjadi mudah untuk membaca dan menulis ke fail teks . Walau bagaimanapun, menavigasi terus ke baris tertentu boleh menjadi mencabar. Soalan ini meneroka kemungkinan penyelesaian untuk masalah ini.

Masalah:

Jika fail teks dibuka menggunakan fstream, adakah terdapat cara mudah untuk melompat ke baris tertentu , seperti baris 8?

Jawapan:

Walaupun fstream menyediakan cara untuk menetapkan penunjuk carian fail, ia secara langsung tidak membenarkan melompat ke baris tertentu . Pendekatan praktikal adalah untuk menggelung melalui fail, mengabaikan semua baris sehingga baris yang dikehendaki dicapai. Begini caranya ia boleh dicapai:

<code class="cpp">std::fstream& GotoLine(std::fstream& file, unsigned int num) {
    file.seekg(std::ios::beg);
    for (int i = 0; i < num - 1; ++i) {
        file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return file;
}</code>

Fungsi ini mengambil fail dan nombor baris yang sepatutnya dicari dan mengembalikan objek fail.

Contoh:

Pertimbangkan fail teks dengan kandungan berikut:

1
2
3
4
5
6
7
8
9
10

Program C berikut menunjukkan cara menggunakan fungsi GotoLine:

<code class="cpp">int main() {
    using namespace std;
    fstream file("bla.txt");

    GotoLine(file, 8);

    string line8;
    file >> line8;

    cout << line8;
    cin.get();
    return 0;
}</code>

Output:

8

Dalam contoh ini, atur cara membaca baris kelapan fail teks dan mencetak kandungannya, iaitu "8".

Atas ialah kandungan terperinci Bolehkah Anda Langsung Melompat ke Baris Tertentu dalam Fail Teks Menggunakan C fstream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn