[c++] program do odczytywania linkow z .txt


(Tomasz Cyc) #1

Mam problem. Potrzebuję program (najlepiej w c++), który będzie odczytywał plik .txt w taki sposób, że będzie otwierał przeglądarkę i wchodził w linki które są w tym pliku tekstowym. Czyli :

nie wymagam od niego zamykania/ukrywania przeglądarki.

pomoże ktoś ;>

niestety jestem w c++ zielony i nie wiem jak się do tego zabrać. Na innym forum podpowiadali mi coś o fstream, ale ja tego wcale nie łapie ... a program jest mi pilnie potrzebny :confused:


(Sawyer47) #2

Jak się nie znasz to nie napiszesz, problem nie jest dla początkującego (choć jest w miarę prosty). Poproś kogoś aby Ci napisał, innego wyjścia nie widzę.


(Xwars) #3

A zwykły wget nie wystarczy? Czy to musi być koniecznie "prawdziwa" przeglądarka?


(somekind) #4

A to jakiś problem otworzyć domyślną przeglądarkę? ;>


(Uzi123) #5
  1. Wczytaj całą linię

  2. otwierasz domslna przegladarke przez podajac jako parametr wywolania string ktory wcztałes

(tak BTW: jak sam tworzysz ten plik txt to duzo lepszym rozwiazaniemjest xml).


(Fiołek) #6

Nie jest. XML jest bardzo rozwlekły, dużo znaków - mało treści. Oczywiście przy bardziej rozbudowanych strukturach danych(np. struktura drzewiasta) jest bardzo dobrym rozwiązaniem, lecz w tym wypadku to po prostu strata czasu i pamięci.


(Uzi123) #7

Ale XML ma cudowną zaletę: jest coś takiego jak XMLserializer i wtedy możesz sobie pchnąć np całą klasę do pliku jednym ruchem i jednym ruchem przeczytać :).

Ale rzeczywiście Kolega nie che chyba zapisywać ustawień czy czegoś podobnego, więc nie będzie miał szansy zauważyć zalet XML.


(Quba 2) #8

Oto gotowy program

#include 

#include 

#include 

using namespace std;

int main()

{




string link[1000]; //tablica stringów => możliwa maksymalna iloćś linków

string down="start \"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" "; // adres przeglądarki lub programu pobierającego np mozilla => na końcu nie zapomnij o spacji

char bat[1000]="linki.bat"; //ścieżka gotowego pliku

int i=0;



ifstream wczytaj("linki.txt");


while(!wczytaj.eof() || i==1000) //wczytuje do końca pliku

{

wczytaj >>link[i];

i++;

}

wczytaj.close();



ofstream zap(bat);

for(int k=0;i>k;k++)

{

string tmp;

tmp=down+link[k];

zap<
cout<
}

zap.close();


cout<<"Nacisnij dowolny klawisz aby uruchomic\n";

getch();

system(bat);

cout<<"\nNacisnij dowolny klawisz aby zakonczyc program!!\n";

getch();

return 0;

}

Ten program :

-wczytuje plik linki.txt

-Przerabia linki.txt i tworzy linki.bat <=po dwu kliku linki otwierają się w Mozilli można zmienić na inny program

w razie niejasności proszę pytać !!


(Kalin 93) #9

Napisałem program dla tego kolegi, ale jak miał wysłać mi doładowanie komórki kontakt się urwał, proszę, ja to zrobiłem tak:

#include 

#include 

#include 


using namespace std;


int main ()

{

	ifstream iPlik ("linki.txt"); // stworzenie strumienia i otwarcie pliku

	string sTemp; // utworzenie stringu

	while (getline(iPlik,sTemp)) //utworzenie pętli która działa póki getline nie zwróci wartości false czyli koniec pliku

	{

		if (sTemp [0] != 'h' && sTemp [1] != 't' && sTemp [2] != 't' && sTemp [3] != 'p' && sTemp [4] != ':' && sTemp [5] != '/' && sTemp [6] != '/')// warunek sprawdzajacy czy na poczatku linku jest http://

		{

			string sCos; //pomocniczy string

			sCos = "http://"; //wypelnienie pomocniczego stringu

			sTemp = sCos + sTemp; //dodanie http:// do pierwszego

		}

		if ((int)ShellExecute (NULL,"open","firefox",sTemp.c_str(),NULL,SW_NORMAL) < 32) //sprawdzenie czy jest mozliwe otwarcie w firefoxie

		{

			ShellExecute (NULL,"open","explorer",sTemp.c_str(),NULL,SW_NORMAL); //jezeli nie da sie to odpalamy w IE

		}

		_sleep (7000); // zatrzymanie pracy programu na 7 sek

	};

}

Według mnie to rozwiązanie jest lepsze, bo możemy wczytać nieograniczoną liczbę stron bez obawy o przepełnienie bufora :wink:


(Fiołek) #10

Tak, tylko jeszcze trzeba programować w języku pod .NET/Java, a nie pure-C++ :wink:

Jakby to była jakaś większa struktura to oczywiście XML jest bardzo dobry, lecz w tym wypadku to zwyczajny przerost formy nad treścią :wink:

@up: co to za moda się na forum zrobiła, żeby gotowe rozwiązania podawać. Przecież to strata czasu, a i ten który o to prosi się nic nie nauczy...