Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Pobieranie danych z pliku od pewnego momentu.

Ostatnio zmodyfikowano 2012-12-24 20:32
Autor Wiadomość
Worie
Temat założony przez niniejszego użytkownika
[C++] Pobieranie danych z pliku od pewnego momentu.
» 2012-12-23 11:59:54
Witam, czytam wsze forum od dawna jako gość, ale wreszcie założyłem własne konto :)

Sprawa wygląda tak: Stworzyłem sobie program w konsoli, który tworzy pliki w rozszerzeniu PHP z danymi które wprowadził użytkownik. I tutaj wszystko mi śmiga jak należy.

Ale chce się zabrać za stworzenie Edytora tych plików, tzn: zeby po wrzuceniu plików PHP do odpowiedniego katalogu, program szukał plików (to mam zamiar zrobić for'em , ze zwiększaną wartośćią bo pliki mają tylko nazwy liczbowe) i
POBIERAŁ/EDYTOWAŁ dane od pewnego ciągu znaku.

Przykładowo: Mam plik php
<?
$zmienna1 = 30;
$zmienna2 = 40;
$zmienna3 = 50;
?>

Chcę wiedzieć, jak pobierać dane (czy to w ogóle możliwe) po danym ciągu znaku który wczesniej zdefiniujemy, np jeśli użytkownik zażyczy sobie A, to aby dane zostały pobrane(zedytowane?) po ciągu "$zmienna1 =" do końca linijki, jeśli B to po ciągu "$zmienna2 ="...

Co do edycji, myślałem by program pobierał wszystkie linijki tekstu z pliku, ale gdy natrafi na coś , co chcemy zmienić, po prostu pisał coś innego i leciał dalej.

Czy jest to w ogóle wykonalne? Generalnie chodzi mi o pogrubiony tekst.
P-71714
xevuel
» 2012-12-23 12:26:54
Tego typu operacje będą najprostsze z użyciem std::string, musisz również poczytać o operacjach na plikach (» Kurs C++Obsługa plików lekcja).

Przy czytaniu pliku odrzucaj pierwsze dwa/cztery i ostatnie dwa znaki (<?/<?php i ?>). Następnie:

if(wybor == "A")
{
   // Podziel tekst wg znaku równości i obetnij średnik na końcu dla linijki 1
}

else if(wybor == "B")
{
   // Podziel tekst wg znaku równości i obetnij średnik na końcu dla linijki 2
}
P-71717
Worie
Temat założony przez niniejszego użytkownika
» 2012-12-23 19:34:51
Czyli musiałbym to robić linijkami? Tzn, pobieram od '=' i pobieram np linijkę piątą?

Nie da rady zrobić żeby właśnie po konkretnym ciągu znaków pobierał dane?
Bo każdy plik bedzie mógł wyglądać inaczej, np $zmienna1 w pliku A będzie w 7 linijce, w B będzie w linijce 28, a w C np w 2, a zalezy mi tylko na zmianie tej jednej, konkretnej zmiennej

Wybaczcie ze nie daje kodu ale chwilowo jestem poza domem (święta) i nie mam dostępu do moich plików.
(swoją drogą, Wesołych Świąt!)
P-71777
xevuel
» 2012-12-23 19:54:46
Możesz, wystarczy odczytać cały plik, następnie znaleźć pozycję tego "konkretnego ciągu znaków", a na końcu obciąć to, co się znajduje x znaków po tej pozycji.
P-71779
Worie
Temat założony przez niniejszego użytkownika
» 2012-12-23 20:12:45
Hmm... Czy mógłbym prosic o jakiś krótki kod z wykorzystaniem w/w? Bo lekcje czytam już któryś raz, symfonie też czytam ale coś chyba nie umiem czytać miedzy wierszami

z góry dzieki!
P-71782
xevuel
» 2012-12-23 20:18:44
Przeczytaj uważnie lekcję, którą podałem wyżej. Krótki, a zarazem pełny kod masz na jej końcu. Czego w nim nie rozumiesz?
P-71785
Worie
Temat założony przez niniejszego użytkownika
» 2012-12-23 20:57:22
Kod końcowy pobiera cały plik, liniowo - tak? Jak mam pobrać dane od ciągu znaków czy od jednego znaku a potem obciąć ten średnik?  To jest mój główny problem :P
P-71792
xevuel
» 2012-12-23 21:34:10
A nie lepiej wczytać cały plik (choćby i linijka po linijce jak w kursie), a potem odpowiednio operować na jego zawartości przypisanej do zmiennej std::string?
P-71802
« 1 » 2
  Strona 1 z 2 Następna strona