Jak dodać standardowe wejscie z pliku do programu?

0

Witam, jako iż potrzebuje na zawał, a nie mogę doszukać się jak zrobić to w kodzie.

Potrzebuje, żeby mój (gotowy) program pobierał dane wejściowe z pliku i później wyrzucił wynik

I trzeba to zrobić w ten sposób w cmd:

abc.exe < abc.in > abc.out

Rzecz w tym, że program w main() na wejście odpala voida który wypełnia vectory danymi z pliku, ale potrzebuje ścieżki do tego pliku.

void zrob()
{
ifstream infile("C:/input.txt");
(...)
}

int main()
{
zrob();
(...)
}

Jakiś pomysł jak to trzeba zrobić?

1

No ale to są 2 różne sposoby:

  1. Wczytujesz plik w kodzie programu, odpowiednio parsujesz dane i na nich działasz.
  2. Z poziomu linii poleceń przekazujesz zawartość pliku na standardowe wejście. Czytasz ze standardowego wejścia i powtórka "odpowiednio parsujesz dane i na nich działasz."

W Twoim przypadku albo jedno albo drugie.
EDIT: jak pokażesz więcej kodu to powiem coś więcej. Na razie w grę wchodzi przerobienie tej funkcji zrob tak zeby nie czytała z pliku tylko z stdin.

2

"odpala voida" - wywołuje funkcje, która zwraca void jak już.

Jeśli odpalasz program w taki sposób:

abc.exe < abc.in > abc.out

no to wczytanie danych z pliku abc.in to cin/scanf a zapisanie do pliku abc.out to cout/printf.

Chyba, że potrzebujesz koniecznie ścieżkę do pliku podaną po < lub >, to wtedy sprawa jest znacznie bardziej skomplikowana.

0

@mwl4 Taki skrót myślowy, sorka.

@xfin

Zanim odpisaliście, doszedłem do wniosku, że zabawa ze ścieżka jednak odpada i zastosowałem coś takiego

  
void wypelnij()
{
    int wartosc;
    cin >> wartosc;
    int temp;
    for (int i = 0; i<wartosc; i++)
    {
        cin >> temp;
        tab.push_back(temp);
    }
} 

Takie czytanie jeden po jeden, po kolei.

I działa poprawnie.

PS: Dzięki za pomoc.

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