Linijka po linijce z pliku (i przetwarzanie)

0

Cześć potrzebuję napisać program, który ściąga z linuksowego pliku .config informacje linijka po linijce i w zależności od ich parametrów wpisuje je do odpowiedniego pliku (y lub m do plików; liczby, stringi, is not set pominąć).
Sam trzon programu, który obsługuje pliki mam już zrobiony, ale nie mam zbytnio pomysłu jak wgryźć się w ściąganie danych z pliku wejściowego i jednoczesne wyszukiwanie poszczególnych parametrów w ciągu znaków. Dodatkowo pliki wyjściowe muszą pomijać CONFIG_ przy wypisywaniu danych.

Czy jest mi ktoś w stanie doradzić coś a propos tego?

0

Pokaż co już masz.

0
kq napisał(a):

Pokaż co już masz.

Tak na prawdę nic specjalnego, samego maina:

#include <iostream>
#include <fstream>

using namespace std;


int main(){
	string tekst;	
	ifstream plik;
	plik.open( "config.txt");
	if(!plik){
		cout << "Błąd otwarcia pliku!";
		return 0;
	}	
	
	while(!plik.eof()){
	plik >> tekst;
	
	cout << tekst;
	
	}
	
	plik.close();
 return 0;
}

Nie wiem co umieścić w while(!plik.eof) ażeby sekwencja przerwała wczytywanie w przypadku wystąpienia paremetru i przekazała odpowiednie dane do wpisania. Generalnie wczytanie i porównanie (znak po znaku) jest moim problemem, a potem spisanie odpowiedniej ilości znaków do pliku.

Kwestię sprawdzenia otwarcia przy is_open .good mam ogarniętą także, to jest do późniejszych poprawek.

0

Okej poradziłem sobie w kwestii parametrów za pomocą getline i paru innych funkcji. To teraz troszeczkę odwrotnie:

Potrzebuję wypisać linijkę, na której początku stoi #. Ktoś ma może jakiś pomysł?

0

jak zczytujesz getlinem to możesz to Od razu też wczytywać do jakiejś tablicy charów lub stringa. Jeżeli będziesz miał tablice charów to:

if(myCharArray[0] == '#')

a jak string:

if (myString.at(0) == '#')

Chyba, że linijki są długie to najpierw robisz getchar() na badanej linijce:

if(getchar() == '#')

1 użytkowników online, w tym zalogowanych: 0, gości: 1