Ukládaní slov ze souboru do proměnné ,knihovna fstream – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ukládaní slov ze souboru do proměnné ,knihovna fstream – C / C++ – Fórum – Programujte.comUkládaní slov ze souboru do proměnné ,knihovna fstream – C / C++ – Fórum – Programujte.com

 

Marek
~ Anonymní uživatel
521 příspěvků
23. 4. 2019   #1
-
0
-

Zdravím, potřeboval bych pomoc jak uložit ze souboru slova. 


int main()
{
string soubor;
cout << "Zadej cestu k vstupnímu souboru" << endl;
cin >> soubor;
string slovo;
ifstream in(soubor);
if (in.is_open()) {
while (in >> slovo)
cout << slovo << " ";
cout << endl;
}
cin.get();
}

Tohle je kód na načtení těchto slov a konzole mi je vypíše ,ale já bych potřeboval je nějakým způsobem dostat do proměnné ,abych s nimi mohl poté pracovat. 

Nahlásit jako SPAM
IP: 149.255.83.–
KIIV
~ Moderátor
+43
God of flame
23. 4. 2019   #2
-
0
-

Jestli myslis "nacitani slov ze souboru", tak kazde ze slov mas v promenne slovo (nez ho prepises dalsim)

Pokud to chces nacitat do nejakeho seznamu, tak pouzij seznam...

Neco jako:

#include <iostream>
#include <string>
#include <vector>
#include <iterator>
#include <functional>
#include <fstream>

std::vector<std::string> readWords(std::istream & in)
{
  std::vector<std::string> slova;
    
  std::copy(
      std::istream_iterator<std::string>{in}, std::istream_iterator<std::string>{}, 
      std::back_insert_iterator<std::vector<std::string>>{slova}
  );

  return slova;
}

int main()
{
  std::ifstream test{ "test.cpp" };
  std::vector<std::string> slova = readWords(test);
    
  std::copy(slova.begin(), slova.end(), std::ostream_iterator<std::string>(std::cout, " "));
  std::cout << std::endl;
}
Nahlásit jako SPAM
IP: 37.48.50.–
Program vždy dělá to co naprogramujete, ne to co chcete...
gna
~ Anonymní uživatel
1891 příspěvků
24. 4. 2019   #3
-
+1
-
Zajímavé

#2 KIIV
Z toho mu pukne hlava, měl jsi napsat jen push_back v cyklu :)

Nahlásit jako SPAM
IP: 213.211.51.–
KIIV
~ Moderátor
+43
God of flame
24. 4. 2019   #4
-
0
-

#3 gna
myslis jako:

std::vector<std::string>  slova;
while (in) {
  std::string slovo;
  in >> slovo;
  slova.push_back(slovo);
}

// vypis:
for (auto & slovo : slova) {
  std::cout << slovo;
}
std::cout << endl;
Nahlásit jako SPAM
IP: 37.48.50.–
Program vždy dělá to co naprogramujete, ne to co chcete...
gna
~ Anonymní uživatel
1891 příspěvků
24. 4. 2019   #5
-
0
-

#4 KIIV
Jop :)

Nahlásit jako SPAM
IP: 213.211.51.–
Marek
~ Anonymní uživatel
521 příspěvků
26. 4. 2019   #6
-
0
-

Děkuji za vaši pomoc ,nějak se s tím zkusím popasovat ,mím úkolem je ,aby uživatel přidal textový dokument a bude tam napsany různý text ,který bude oddělen místo mezer : (dvojtečkou). Chci se ještě zeptat ,když to nebude odděleno nebude to brát jako jedno slovo? Díky za pomoc 

Nahlásit jako SPAM
IP: 149.255.83.–
Marek
~ Anonymní uživatel
521 příspěvků
26. 4. 2019   #7
-
0
-

A ještě jedna otázka ,nenašel jsem nikde vysvětlení seznamu v češtině pro lepší pochopení. Nedoporučili byste mi nějaký odkaz? Moc díky

Nahlásit jako SPAM
IP: 149.255.83.–
KIIV
~ Moderátor
+43
God of flame
27. 4. 2019   #8
-
0
-

#6 Marek
ano, kdyz tam bude dvojtecka, tak se timto zpusobem bude brat jako cast slova. Je pak lepsi pouzit nacitani celeho radku a rosekat pomoci boost::split. Nicmene je to externi knihovna, takze uz to muze delat problemy zacatecnikum nebo to nemusi byt dovolene ve skole.

Pak se da pouzit nacteni celeho radku pomoci getline a ten pak rosekat pomoci find, nebo prohnat pres sstream a do getline se da dat i jiny separator...

Nic z toho neni moc vhodne, pokud muzes mit treba  neco:"dvojita:hodnota":dalsi ... to uz budes proste muset delat pomoci stavovych automatu

Nahlásit jako SPAM
IP: 46.135.102.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Marek
~ Anonymní uživatel
521 příspěvků
27. 4. 2019   #9
-
0
-

#8 KIIV
Nedostali jsme žádný určitý podmínky na to ,jak a přes co to udělat. Dostali jsme zadání a s nadsázkou řečeno udělejte si to jak chcete.    Něco z tvých doporučení vyzkouším. Děkuji

Nahlásit jako SPAM
IP: 149.255.83.–
MilanL+1
Grafoman
29. 4. 2019   #10
-
0
-

#9 Marek
já jsem řešil kdysi něco podobného a při hledání jsem narazil na možnost nastavit v getline ten oddělovač a mám ten dojem že to rozpozná i řádkování, chce to jen vyzkoušet.

getline(myfile, slovo, ':');
 

Nahlásit jako SPAM
IP: 91.139.9.–
KIIV
~ Moderátor
+43
God of flame
29. 4. 2019   #11
-
0
-

#10 MilanL
jen bych to aplikoval na jednotlive radky (jak jsem zminoval), jinak bude mit konec jednoho radku a zacatek dalsiho jako jednu hodnotu.

Nahlásit jako SPAM
IP: 185.163.40.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Marek
~ Anonymní uživatel
521 příspěvků
5. 5. 2019   #12
-
0
-

#11 KIIV
Tak jsem se dostal do fáze ,kdy jsem schopnej ty slova rozdělit,seřadit podle abecedy(použitím bubble sortu ,podle mě je to zbytečné takhle) Teď ale potřebuji do souboru napsat A-Z a vždycky A: (počet slov na a ) atd.

Lze nějak pomocí toho listování ve vektoru pomocí find najít vždy začáteční písmeno "a" a když ho najde ,tak do počitadla přidat čislo? 

Děkuji za pomoc

Nahlásit jako SPAM
IP: 149.255.83.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 83 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý