Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [C++] File (binari)

Visualizzazione discussione

  1. #5
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    177
    Quote Originariamente inviata da shodan Visualizza il messaggio
    Dipende. Gli stream C++ o la fopen() del C non gestiscono la condivisione granulare del file, ossia ciò che viene creato è sempre condiviso in lettura/scrittura. Pertanto se quel "test.txt" è stato creato con roba standard, non c'è modo di testare se tale filè già aperto da qualcun altro. fs.open() e fs.is_open() fanno riferimento solo allo stream corrente. E cosa importante, non c'è modo di recuperare il descrittore del file.

    Se vuoi avere un po' di granularità devi scendere di un livello e usare le funzioni di basso livello del C. Per Windows le puoi trovare qui:
    https://msdn.microsoft.com/en-us/library/40bbyw78.aspx
    i nomi credo non si discostino dallo standard POSIX. Occhio però che i flag sono diversi da quelli standard.

    In alternativa puoi usare direttamente le API, a partire da CreateFile().
    Pensavo ci fosse qualcosa di piu' immediato, quindi tenendo presente che l'utente finale è il sottoscritto e che i file da gestire sono necessari solo al programma che tenta di leggerli / scriverli, l'evento da me ipotizzato, file gia in uso, inizia ad essere abbastanza remoto, e comunque, al massimo mi arrabbiero' con me stesso. Tengo comunque presente quanto consigliato, quando ci sara' tempo (???), gli daro' una guardata, per ora mi preme chiarirmi le idee sul resto delle operazioni.

    Mi restano in sospeso la lettura e la scrittura.

    Dalla lettura della documentazione, se non ho capito male, entrambe dovrebbero essere operazioni che non invalidano l'oggetto stream, che sta svolgendo l'operazione, ma settano i flag interni a valori che descrivono quanto successo.

    Stando cosi le cose, finita la scrittura, verifico che il / i flag siano 'a posto', nel caso di lettura, piu o meno idem, cioe' faccio l'operazione di lettura in una variabile temporanea, verifico i flag dello stream per avere conferma che l'operazione sia avvenuta con successo, quindi copio il valore nella variabile vera e propria.

    Se le cose stanno cosi', nell'ipotesi di una sequenza di read / write a seconda dell'operazione che si sta effettuando, ad esempio devo leggere / scrivere un char, un double, una stringa, effettuo il controllo del / dei flag opportuni dopo ogni singola operazione o alla fine della catena di operazioni?

    In attesa di conferme, smentite, chiarimenti, vado a guardare nuovamente la documentazione, in modo da scrivere qualche riga di codice a favore anche di altri che eventualmente leggeranno in futuro.
    Ultima modifica di ing82; 14-03-2017 a 19:12

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.