mam problem bo podaje jakis jeden test do programu i program zwraca mi poprawy wynik ale jak odpale program i podaje mu ten sam input z pliku (./program < plik) (w plik mam ten sam test) to juz zwraca mi inny wynik, zly wynik. w c++ co moze byc tego przyczyna? #naukaprogramowania #linux
@agsbajahs: dodaj w programie wypisywanie tego co wczytał. Pewnie jest jakaś różnica.
Na przykład: - inne kodowanie (UTF-8, ISO), - różnica w liczbie znaków końca linii (np. nie ma gdzieś entera, a gdzieś jest) - różnica w typie znaków końca linii (CRLF, \r\n), - jeśli plik jest w kodowaniu UTF-8, to pierwszym znakiem jest BOM (spróbuj UTF-8 bez BOM).
@agsbajahs: czyli źle wczytujesz. Program przygotowany na to, żeby dostać wejście jako taki argument, a nie dopiero po uruchomieniu i wpisaniu z palca? Wrzuć kod. Albo chociaż fragment z wczytywaniem.
@agsbajahs: ewentualnie inne rozwiązanie jeśli nie potrzebujesz takiego. Wczytujesz nazwę pliku, a w programie otwierasz ten plik i dopiero z niego wczytujesz. No ale to nie rozwiązuje problemu tak jak chcesz.
@mk321: wydaje mi sie ze predzej problem jest z tym cin.ignore i getlinem bo ja tutaj przekazuje tylko zawartosc pliku jako arugmenty i gdybym mial dwa zwykle stringi i dwa std::cin bez getline to by dzialalo, ten getline mi tylko dziala jak recznie wprowadzam, a ma problem jak z pliku
#naukaprogramowania #linux
Na przykład:
- inne kodowanie (UTF-8, ISO),
- różnica w liczbie znaków końca linii (np. nie ma gdzieś entera, a gdzieś jest)
- różnica w typie znaków końca linii (CRLF, \r\n),
- jeśli plik jest w kodowaniu UTF-8, to pierwszym znakiem jest BOM (spróbuj UTF-8 bez BOM).
wczytuje dwa stringi, pierwszy moze miec spacje, drugi to klasyczny string
Zainteresuj się tym co masz w mainie:
int main(int argc, const char* argv[])
Spróbuj stąd wczytać pierwszy argument:
argv[0]