Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
ahoj, prosím o radu,
někdo zadá tento řetězec:
/prvni/druhy/treti
(je to včetně těch lomítek) a já potřebuju uložit jednotlivě ta slova, takže například v proměnné
word[0] bude slovo 'prvni'
word[1] = 'druhy'
word[2] = 'treti'
jak toho lze docilit?
Offline
Když to má být C++, tak to lze vyřešit poměrně snadno bez pointerové aritmetiky a pointerů. Stačí k tomu funkce std::getline, která čte ze streamu do stringu až do určeného oddělovače.
#include <string>
#include <vector>
#include <iostream>
#include <sstream>
int main() {
std::string const INPUT = "/prvni/druhy/treti";
std::vector<std::string> words;
std::string word;
std::istringstream is(INPUT); // Stream, ktery bude cist ze stringu INPUT. Lze pouzit i std::cin, samozrejme.
while (std::getline(is, word, '/')) { // Z 'is' opakovane cti do 'word' az do znaku '/' tak dlouho, dokud je stream platny.
if (!word.empty()) {
words.push_back(word);
}
}
for (unsigned int i = 0; i < words.size(); ++i) {
std::cout << "words[" << i << "] = \"" << words[i] << "\"\n";
}
}Offline
ahoj dobře díky, ještě vlastně pardon, zapomněla sem napsat že to má být c++ ale trefil ses Oxyd :) a taky sem zapomněla napsat, že smim využít jen cstring, ale nějak pořád nerozumim tomu jak si někam uložim to slovo mezi lomítky a potom přejdu na další slovo mezi lomítky a to si zas taky někam uložim, nepochopila sem to ani když sem pročítala témata od repro, jak zde psat septolet, tak nešlo by to ještě přiblížit méně chápavému lajkovi jako jsem já prosím?
Offline
↑ case_fcs: Nevím, mám rád jednoduchost. Letím se učit, tak jsem Ti sem něco naplácal:
int polozka = 0;
while (true) {
char c = cin.get();
if ( c == '/') {
if (polozka == 0) { hod do pole první; };
if (polozka == 1) { hod do pole druhé; };
if (polozka == 2) { hod do pole třetí; };
polozka++;
}
if ( c == ' ') break;
}Offline