Program pobierający nazwe ścieżki pliku txt.. dalej w opisie treści

0

#apka konsolowa, C++
Witam wszystkich, jestem początkujący i zaplanowałem sobie zrobienie przerastającego mnie troche projektu i proszę o pomoc:). Chodź dla wielu z Was może wydawać się banalny. Nie proszę też o napisanie gotowego kodu, ale o bardziej o pomoc merytoryczną jak go wykonać.
Chciałbym zrobić następujący program:
Zmieniałby on wielkosc liter na duze z pliku txt.
Tworzymy plik txt gdziekolwiek na kompie, do ktorego bedziemy mogli wkleic/(napisac(bez sensu) xD) tekst napisany malymi literami.
Program ma spytac o lokalizacje tego otóż pliku, otworzyć go do odczytu.
Pobrac zawartość z tego txt, napisaną małymi literami, do RAM.
Zmienić wielkość liter z pobieranych linijek na duże, zapisac do RAM.
Otworzyć nowy txt do zapisu i zapisac w nim przekonwertowany tekst.(nie musi juz pytac o lokalizacje do zapisu, moze zapisac w miejscu działania aplikacji, chociaż jakby ktoś mi wytłumaczył jak to tez zrobic to byloby super:D)

Każda pomoc mile widziana:)

1
HalpMe napisał(a):

Nie proszę też o napisanie gotowego kodu, ale o bardziej o pomoc merytoryczną jak go wykonać.

Jasne. Z czym konkretnie masz problem?

1

Drobna rada: wygodniejszym rozwiązaniem może być przekazanie ścieżki do pliku jako parametru programu.

  • Otwórz i zapisz plik za pomocą fstream,
  • użyj toupper() z <cctype>
0

chodzi głównie o początek, jak kazac programowi pobrac sciezke? Zeby automatycznie pobrał ja po wpisaniu i otworzyl wlasnie ten plik. Bo wiem jak otworzyc plik o zadanej nazwie, ale w tym wypadku to nwm od czego zaczac. Czy musze np utworzyc nowy txt z zapisem sciezki.. hmm juz sam nie wiem

1

Nasuwają się dwa proste rozwiązania:

  • pobierasz ścieżkę do pliku od użytkownika przez std::cin lub coś podobnego
  • bierzesz tę nazwę z argv
0
  • bierzesz tę nazwę z argv
    a czo to is?

Mam cos takiego (please dont laught!)

#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;

string sciezka;

int main()
{
    cout << "Wprowadz sciezke pliku txt: " << endl;
    cin >> sciezka;

    ifstream plik;
    plik.open(sciezka,ios::in);                 //mój main problem//

    string pobranytext;

    while(getline(plik, pobranytext))

    cout << pobranytext;                        //sprawdzam czy tekst sie pobrał//
    system("PAUSE");

    return 0;
}
0

argv to wektor argumentów podanych przy wywołaniu programu: http://www.cplusplus.com/articles/DEN36Up4/

Program wygląda na pierwszy rzut oka OK, z dokładnością do nieczytelnego formatowania pętli i system("PAUSE").

0

Problem w tym że nie chce się skompilować przez zly plik.open
Niestety wiedza z poradnika mnie poki co przerasta. Nwm co robic z tym argv, o vectorach w programowaniu jeszcze nic nie wiem:/

0

wczytuje sciezke cin'em, potem otwieram ale tam juz nie ma cudzysłowów i mysle ze to prze ich brak, ale gdy je dodam to jest traktowane jak istniejąca lokalizacja, a nie jak zmienna :/

0

U mnie działa (gcc (Gentoo 8.2.0-r4 p1.5) 8.2.0). Jaki dokładnie masz błąd kompilacji?

A ten argv to wektor bardziej w pojęciu matematycznym, a nie C++-owym (bo to nie std::vector, tylko tablica w stylu C), ale jeśli nie chcesz, to się tym nie musisz jeszcze przejmować.

0
Althorion napisał(a):

U mnie działa (gcc (Gentoo 8.2.0-r4 p1.5) 8.2.0). Jaki dokładnie masz błąd kompilacji?

Code Blocks

error no matching function for call to 'std::basic_ifstream<char>open(std::string&, const openmode&)'

0

GNU GCC Compiler

0

znalazlem rozwiazanie w googlach wklejajac error got damn it, brakowalo mi jakies funkcji od czegos zwiazanego z c++11 i musze dodawac: zmienna.c_str()

Swoją drogą jak napisac sprawdzenie czy podana sciezka istnieje?
Coś takiego nie działa:

if (plik.good(sciezka.c_str()==false)
    {
        cout << "Nie znaleziono sciezki o podanej nazwie" << endl;
        exit(0);
    }
0

Nie zapominaj, że ścieżki mogą zawierać spacje, i wtedy cin >> path nie wystarczy.

0
tajny_agent napisał(a):

Nie zapominaj, że ścieżki mogą zawierać spacje, i wtedy cin >> path nie wystarczy.

Dzięki za wskazówke, zmieniam na getline(cin, sciezka) :)

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