cari

Rumah  >  Soal Jawab  >  teks badan

Kunci fail - C++ fstream membuka fail txt dalam mod ios::out|ios::in, tetapi Notepad boleh mengubah suai fail semasa program sedang berjalan?

C++ fstream membuka fail txt dalam mod ios::out|ios::in, tetapi Notepad boleh mengubah suai fail semasa program sedang berjalan

Nota: Untuk Win7 x64, akaun tersebut adalah Administrator Tiada UAC, jadi ia adalah terus pentadbir.

#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char const *argv[]) {
    fstream file("test.txt",ios::in|ios::out);
    file.open("test.txt",ios::in|ios::out);
    char c;
    cin>>c;
    while(c!='X'){
        cin>>c;
        cout<<"Get a :"<<c<<endl;
    }
    return 0;
}

Selepas mengklik OK: kotak dialog Simpan Sebagai akan muncul, dan hasilnya boleh ditimpa.

Program masih berjalan, tetapi fail telah diubah suai.

Pada asalnya, ia tidak boleh diubah suai terus menggunakan sublimetext, tetapi selepas beberapa kali bermain-main dengan Notepad, kini sublimetext juga boleh diubah suai.

Sila beritahu saya cara menghalang program lain daripada menulis dan memadam fail tertentu semasa program sedang berjalan, tetapi masih boleh membacanya

世界只因有你世界只因有你2774 hari yang lalu1115

membalas semua(2)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:26:22

    Mari kita bincangkan masalah anda dahulu: selepas Notepad menimpa fail lama, fail yang dibuka semasa proses adalah fail sebelumnya (fail sebelumnya masih ada, tetapi anda tidak dapat melihatnya), dan fail yang anda edit semula sudah ada fail baharu

    Di Linux, kunci mandatori pun boleh dipintas dengan menyahpaut, jadi tiada cara untuk mengelakkan masalah ini di Linux,

    API sistem di bawah Windows sepatutnya menyediakan fungsi tertentu, tetapi saya sangat mengetahuinya, kerana saya sering mendapati: "Fail ini diduduki oleh proses dan tidak boleh dipadam", tetapi saya tidak menolak sekatan ini

    balas
    0
  • 高洛峰

    高洛峰2017-05-16 13:26:22

    Soalan ini agak menarik Idea penyelesaian masalah boleh seperti berikut:

    1. Adakah ini masalah cache IO fail?
      Editor--Penimbal Sistem---Fail Entiti

    2. Adakah ini masalah kunci baca-tulis fail?
      (Saya nampak bahawa walaupun kod anda membuka fail dalam cara yang boleh dibaca dan ditulis dan mewujudkan persatuan, ia hanya menggunakan bacaan; kunci baca nampaknya tidak eksklusif)

    balas
    0
  • Batalbalas