• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie alfabetycznie, znajdowanie spacji w string.

VPS Starter Arubacloud
+1 głos
330 wizyt
pytanie zadane 17 maja 2021 w C i C++ przez Hardwell Dyskutant (8,960 p.)

Witam, pisze program, który posortuje "słowa" z pliku txt, korzystam z getline, i napotkałem mały problem, a mianowicie:

w pliku txt mam np:
abcd
efg
hijk lmn
opr

chciał bym, aby program wykrył "znak biały", i podzielił powyższe linie w ten sposób:
abcd
efg
hijk
lmn
opr

(spacje mają być traktowane jako przeniesienie do nowej linijki)

kodzik:
 

 while (!plikDoOdczytu.eof()) 
    {
        getline(plikDoOdczytu, liniaZpliku);
        cout <<liniaZpliku <<endl;
    }

 

4
komentarz 17 maja 2021 przez NewEraOfPeace Gaduła (4,790 p.)

W takim razie nie rozumiem po co Ci tam getline..
 

while(plikDoOdczytu >> jakisMojSuperString) {
    ...
}

 

komentarz 17 maja 2021 przez urbix01 Gaduła (3,290 p.)

@Hardwell,  nie jestem pewien ale getline pobiera "całą" linie nawet ze znakami białymi. Można z niego korzystać jeżeli np ktoś ma dwa imiona albo nazwisko dwuczłonowe. Inna metoda powinna rozwiązać problem. Ewentualnie jeżeli chcesz iść na piechotę to pętla while i jeżeli napotka ona znak spacji ' ' to cout<<endl;

komentarz 17 maja 2021 przez Hardwell Dyskutant (8,960 p.)
Np jaka metoda?
komentarz 18 maja 2021 przez j23 Mędrzec (194,920 p.)
W pierwszym komentarzu masz tę metodę.

2 odpowiedzi

+2 głosów
odpowiedź 18 maja 2021 przez TOM_CPP Pasjonat (22,640 p.)

Wczytanie danych z pliku może odbywać się w momencie utworzenia kontenera std::set<string>, który dodatkowo umieszcza je w kolejności alfabetycznej.

#include <iostream>
#include <fstream>
#include <iterator>
#include <set>

using namespace std;

int main()
{
    ifstream file {"data.txt"};
    set<string> words { istream_iterator<string>{file} , {} };
    for( const auto& word : words )
    {
        cout << word << endl;
    }
}

https://wandbox.org/permlink/qsYevkSJFMiRXKW7

0 głosów
odpowiedź 18 maja 2021 przez VBService Ekspert (251,170 p.)

To jest chyba najprostszy sposób, tak jak podał @NewEraOfPeace

on-line

data.txt

abcd
efg
hijk lmn
opr
stuw xyz 1234
lorem
#include <iostream>
#include <fstream>

int main()
{
    std::string line;
    std::ifstream file("data.txt");
    
    while (file >> line)
    {
        std::cout << line << std::endl;
    }
    
    file.close();

    return 0;
}

komentarz 18 maja 2021 przez Hardwell Dyskutant (8,960 p.)
Fakt, proste i przejrzyste.

Teraz będę zabierał się za sortowanie alfabetycznie, jakiś pomysł?
Na necie znalazłem tylko przykłady z zastosowaniem sort() a niestety muszę korzystać tylko z bibliotek standardowych.
1
komentarz 18 maja 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Przecież std::sort jest z biblioteki standardowej
komentarz 18 maja 2021 przez Hardwell Dyskutant (8,960 p.)
Nie jestem pewien, czy mogę skorzystać z #include <algorithm>
komentarz 18 maja 2021 przez VBService Ekspert (251,170 p.)

Podobne pytania

0 głosów
1 odpowiedź 235 wizyt
pytanie zadane 15 października 2022 w C# przez AtomBari Początkujący (440 p.)
0 głosów
3 odpowiedzi 491 wizyt
pytanie zadane 18 lutego 2023 w C i C++ przez Latarnik Użytkownik (650 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...