• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto [C++] Leggere file (di configurazione)

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Salve.

Ho creato un file di configurazione contenente tre informazioni: proprietario server, nome server, slot del server disponibili.

Il file è strutturato in questo modo:

Gianfranco
Server di Gianfranco
10

... dove per ogni riga è presente un informazione.

Ora, passando al codice

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Dichiaro tre variabili dove in ciascuna inserirò il valore letto nel file (proprietario ecc...). Creo lo stream reader del file e lo leggo fino a quando non finisce. Intanto creo un contatore inizialmente posto a 1. Per ogni lettura il contatore aumenta. Se è 1, allora immagazzina nella variabile OWNER la prima info nel file, se è 2 allora ci mette il NOME DEL SERVER e così via...

Ma quando vado a stampare i valori, alla fine, non esce un bel niente.

C'è sicuramente un errore logico.

Grazie in anticipo!
 
Salve.

Ho creato un file di configurazione contenente tre informazioni: proprietario server, nome server, slot del server disponibili.

Il file è strutturato in questo modo:

Gianfranco
Server di Gianfranco
10

... dove per ogni riga è presente un informazione.

Ora, passando al codice

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Dichiaro tre variabili dove in ciascuna inserirò il valore letto nel file (proprietario ecc...). Creo lo stream reader del file e lo leggo fino a quando non finisce. Intanto creo un contatore inizialmente posto a 1. Per ogni lettura il contatore aumenta. Se è 1, allora immagazzina nella variabile OWNER la prima info nel file, se è 2 allora ci mette il NOME DEL SERVER e così via...

Ma quando vado a stampare i valori, alla fine, non esce un bel niente.

C'è sicuramente un errore logico.

Grazie in anticipo!

non ci sono errori , anche se fWrite non serve. l'unica cosa probabile è che non abbia trovato il file , facci un controllo su ^^
 
devi usare std::getline(stream f, string s) , la metti come condizione del ciclo e poi assegni le linee lette alle varia variabili

Bene! Funziona!

Ora, però, siccome l'ultimo valore deve essere un intero ho cercato di usare stoi(s) per convertire la S del getline() in un intero e poi assegnare il valore a serverSlots che è un intero. Ma il compilatore dice: 'stoi' was not declared in this scope

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
 
Bene! Funziona!

Ora, però, siccome l'ultimo valore deve essere un intero ho cercato di usare stoi(s) per convertire la S del getline() in un intero e poi assegnare il valore a serverSlots che è un intero. Ma il compilatore dice: 'stoi' was not declared in this scope

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

scrivi std::stoi :soso:
 
mmm colpa di cygwin quindi non puoi usare nemmeno atoi e company , va be a questo punto usa strtol definito in <cstdlib>

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Aspetta aspetta... ho compilato il tutto su Visual Studio e a quanto pare Microsoft ha il punto a favore. Che cavolo, manco il GCC è buono ora?
 
Aspetta aspetta... ho compilato il tutto su Visual Studio e a quanto pare Microsoft ha il punto a favore. Che cavolo, manco il GCC è buono ora?

:nono: solo che su windows g++ non c'è e si utilizza Mingw(Minimalist GNU for Windows) per installare gcc/g++ e ovviamente quando l'hai installato non hai incluso lo standard 11 o probabilmente un piccolo bug durante l'installazione non so . Comunque usando strtol non avresti problemi
 
Ultima modifica:
:nono: solo che su windows gcc non c'è e si utilizza Mingw(Minimalist GNU for Windows) per installare gcc e ovviamente quando l'hai installato non hai incluso lo standard 11 o probabilmente un piccolo bug durante l'installazione non so . Comunque usando strtol non avresti problemi

Lascia stare strtol... in questo momento sto cercando un compilatore buono e tranquillo ma, soprattutto, DECENTE per il C++11
Con Visual Studio ci son sempre quelle piccole cose che non fanno parte del C++11 come #pragma once e "stdafx.h" e fanno incrudelire...
 
Lascia stare strtol... in questo momento sto cercando un compilatore buono e tranquillo ma, soprattutto, DECENTE per il C++11
Con Visual Studio ci son sempre quelle piccole cose che non fanno parte del C++11 come #pragma once e "stdafx.h" e fanno incrudelire...

tra l'altro è g++ non gcc , dato che stiamo parlando di c++. Comunque alla fine basta riscaricare mingw e installarlo d'accapo per risolvere :soso:. D'altra parte non poter usare qualche funzione non è la fine del mondo :emoji_relieved: @gedamial
 
tra l'altro è g++ non gcc , dato che stiamo parlando di c++. Comunque alla fine basta riscaricare mingw e installarlo d'accapo per risolvere :soso:. D'altra parte non poter usare qualche funzione non è la fine del mondo :emoji_relieved: @gedamial

Ma se io voglio programmare in C++, perché devo esser privato di alcune funzioni solo per dei compilatori fatti male?

Io ho settato il tutto così:
Perfavore, Entra oppure Registrati per vedere i Link!


Il compilatore migliore...mi dicono...
 
Ma se io voglio programmare in C++, perché devo esser privato di alcune funzioni solo per dei compilatori fatti male?

Io ho settato il tutto così:
Perfavore, Entra oppure Registrati per vedere i Link!


Il compilatore migliore...mi dicono...

sta settato bene , ma non centra code::block cerca MinGw Installation Manager e li vedi tutto quello che è mancante rispetto al classico gcc/g++ di linux , quello che ti serve lo installi , infatti la stessa sigla di minGw è Minimalist GNU for Windows.