wczytanie wartosci zmiennych z plików txt

nowix666

Użytkownik
Dołączył
Luty 16, 2008
Posty
34
Mam mały(chyba) problem
<
w aplikacji trzeba aby zmienne były wczytywane z txt plik txt wygląda mniej wiecej tak
id=123
sc="\\gasa\\aa"<-konieczny jest cudzysłów i podwójny backslash
com0=dłuuuuuuuuuggggggi tekst zawierający znaki interpunkcyjne
com1=to samo co wyżej
Plik txt moge edytować. Tylko że niemam pojęcia jak to zrobić w sieci znalazlem tylko przyklady jak wczytać cały tekst a nie np.
int id="pierwsza linijka"
I teraz kolejne pytanie
<
jak zadeklarować zmienną zawierającą tekst?
<
Nigdy mi to niebyło potrzebne wiec zabardzo tego nieszukałem a teraz niemoge tego znalesc. Pisze w M$ VC++ '05. Z góry dzięki za pomoc.
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Poczytaj o pozycjonowaniu wskaźników i klasie string (z przestrzeni nazw std). Jak znajdę czas to Ci napiszę jutro program (przypomnij mi na PW). Wyjaśnij jeszcze jak praca programu ma wyglądać: ma wyszukiwać dane dla jednego słowa, czy może coś innego?
 

Legalnl

Użytkownik
Dołączył
Październik 8, 2008
Posty
828
hmmm a nie lepiej zroić takie coś przez klase INI? bo plik, ktory pokazaleś wygląga jak plik INI więc, czemu by sobie tego włąsnie tak nie zrobić. ini jest wygodne i nie bedizesz miał problemow. mozesz wczytać same znienne, same wartości, wszystko. co chcesz. Plik INI to takze zwykły plik tekstowy
<
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Kod:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char tabl[99999];

    fstream file("dokument1.txt", ios::in | ios::out | ios::binary);
    file.read(tabl, sizeof(tabl) );

    string iplik(tabl);
    int pozycja_id = iplik.find("id=");
    int pozycja_sc = iplik.find("sc=");
    int pozycja_com0 = iplik.find("com0=");
    int pozycja_com1 = iplik.find("com1=");
    string zaw_id = iplik.substr(3,(pozycja_sc - 3) );
    cout << "Zmienna id ma wartosc: > " << zaw_id;
    string zaw_sc = iplik.substr(pozycja_sc, (pozycja_com0 - 7) );
    cout << "Zmienna sc zawiera: > " << zaw_sc;
    string zaw_com0 = iplik.substr((pozycja_com0 + 5), (pozycja_com1 - 29) );
    cout << "Zmienna com0 zawiera C-string: > " << zaw_com0 << endl;
    string zaw_com1 = iplik.substr( (pozycja_com1+5), string::npos);
    cout << "Zmienna com1 zawiera C-string: > " << zaw_com1;
    file.close();
}
Obiekty przechowujące C-stringi to np.: char, string. (string jest znacznie wydatniejszy - poczytaj o tej klasie jeśli chcesz się zająć obsługą tekstów).
 

Damn3d

Użytkownik
Dołączył
Kwiecień 18, 2009
Posty
88
Proponuje zrobić własną klasę dziedziczoną z std::string, będzie prościej.
 

RobertG

Użytkownik
Dołączył
Styczeń 3, 2007
Posty
391
Połączyłbym pomysły Damn3d'a i legalnlego i napisał klasę dziedziczącą po klasie do obsługi plików XML lub YAML'a, klasie która miała by takie API, by pracowało Ci się wygodnie. O ile IMHO jest to rozwiązanie najbardziej elastyczne i wygodne to też najbardziej oddalone od pytania które tu postawiłeś - to jest w sumie dygresja a nie odpowiedź.
 

Vexiorus

Użytkownik
Dołączył
Kwiecień 25, 2009
Posty
51
hmmm a nie lepiej zroić takie coś przez klase INI? bo plik, ktory pokazaleś wygląga jak plik INI więc, czemu by sobie tego włąsnie tak nie zrobić. ini jest wygodne i nie bedizesz miał problemow. mozesz wczytać same znienne, same wartości, wszystko. co chcesz. Plik INI to takze zwykły plik tekstowy[/b]

a jak wprowadzic dane do pliku ini i jak je potem pobrac do zmiennych w programie .exe oraz w pliku systemowy .bat ??
i jak podac ktora linijka z tego pliku ini. ma byc wzieta do mojej "zmiennej" ??
 
Do góry Bottom