Press "Enter" to skip to content

Moja kserokopiarka

Właśnie walnęłam sobie taki kodzik:

#include <iostream>
#include <string>
#include <fstream>
#include <boost/filesystem.hpp>
#pragma hdrstop
using namespace boost::filesystem;
using namespace std;
int main(int argc, char** argv){
//nagłówek
cout<<"                            ..::Ksero::..";
cout<<"nProgram kopiuje jeden plik tekstowy do drugiegon";
cout<<"i nic więcej.n";
//help programu
if (argc ==2 && (string)argv[1]=="--help"){
cout<<"Użycie:n";
cout<<argv[0]<<" <plik wejściowy> <plik wyjściowy>n";
cout<<"Plik wyjściowy nie może istnieć.";
return 0;
}
//Zauważmy, że help jest już obsłużony
if (argc != 3){
cerr<<"Błędne wywołanie. Spróbuj "<<argv[0]<<"--help";
return 1; //error number 1: błąd wywołania programu
}
//Parametry mamy obsłużone. Zajmijmy się plikiem wejściowym
ifstream zpliku (argv[1]);
if (zpliku==0){
cerr<<"Błąd otwarcia pliku wejściowego.";
return 2; //error number 2: Błąd otwarcia pliku wejściowego
}
//Teraz plik wyjściowy. Najpierw sprawdzimy czy istnieje. Nie powinien
if(exists (argv[2])){
cerr<<"Plik już istnieje. Wybierz inną nazwęn";
return 3; //error number 3: plik wyjściowy istnieje
}
//No ok
ofstream dopliku (argv[2]);
if (dopliku==0){
cerr<<"Błąd otwarcia pliku wyjściowego.";
return 4; //error number 4: Błąd otwarcia pliku wyjściowego
}
//No ok. Chyba obsłużyłam większość błędów, które mi przyszły na myśl.
string s; //Bufor tymczasowy na linijkę tekstu z pliku
while (getline(zpliku, s)){
dopliku<<s<<"n"; //Bo getline usuwa znak końca linii
}
cout<<"Operacja zakończona powodzeniem.n";
return 0;
}

Wkurzałam się, bo kod mi się nie kompilował. Myślałam że lib jest zły. Skompilowałam ten ze strony producenta. Dalej kod się wykrzacza. Błąd linkera. WT kurrr F? Rozwiązanie? Proste
Należało kod skompilować w następujący sposób

g++ -o ksero pliczek.cpp -lboost_filesystem_mt

a tego po myślniku mi brakowało:)

4 komentarze

  1. Po co pisać taki kodzik nie lepiej użyć cat’a ?

    • adminka adminka

      To było tylko po to, by sobie potrenować. Kod nie był podyktowany potrzebą posiadania takiego narzędzia.

      • No tylko nie wiem co ty tutaj trenowałaś, czytanie dokumentacji ?

        Heh kto by pomyślał że używając boost’a trzeba go dolinkować.

        • adminka adminka

          Po prostu wcześniej liby mi IDE linkowało:p

Comments are closed.