Möglichkeit, strings mit mehreren wörtern zu teilen?
-
@Swordfish sagte in Möglichkeit, strings mit mehreren wörtern zu teilen?:
dub di dub.
Das ging ja schnell
-
@DirkB sagte in Möglichkeit, strings mit mehreren wörtern zu teilen?:
Das ging ja schnell
Scherzkeks. Wie oft schreibt man sowas?
Für
@Swordfish sagte in Möglichkeit, strings mit mehreren wörtern zu teilen?:std::ostream&
will man wahrscheinlich auch einen Template-Parameter.
-
Dieser Beitrag wurde gelöscht!
-
@Swordfish
das ist echt lieb von dir, aber ich darf solche extras wie auto ostream& usw... gar nicht verwenden.. wenn ich ehrlich bin kann ich es auch gar nicht richtig lesen, obwohl es bestimmt ein besserer lösungsweg ist..
wir dürfe nur array, string und schleifen verwenden. (Auch wenn es für die Aufgabe nicht vorgeschrieben ist, kann ich eine eigene funktion schreiben, aber vieles aus deiner funktion darf ich gar nicht verwenden)
und vieles davon kenne ich gar nicht
zb
ostream ( & ist ne referenz das sehe ich)
diese ganzen doppelpunkte sind wegen der funktionsüberladung da bin mir da aber auch nicht sicher
isspace kenne ich auch nicht..
auto..
wir dürfen keine pointer verwenden...
also ich bin halt echt etwas eingeschränkt#include <cctype> das dürfen wir gar nicht inkludieren
-
Dann eben ohne das Zeug:
#include <cctype> #include <string> #include <iostream> int main() { using std::isspace; using std::cout; using std::string; string foo[]{ "Die Kuh macht muh", "Die Katze macht miau", "Der Hund macht wau", }; for (unsigned i = 0; i < sizeof foo / sizeof *foo; ++i) { for (unsigned pos = 0, end = foo[i].length(); pos != end;) { while (pos != end && !isspace(foo[i][pos])) cout.put(foo[i][pos++]); cout.put('\n'); while (pos != end && isspace(foo[i][pos])) ++pos; } std::cout.put('\n'); } }
Wenn Du
std::isspace()
nicht verwenden darfst dann schreibst Du Dir eben selbst eine Funktion die rudimentär dasselbe macht.bool my_isspace(int ch) { return ch == '\t' || ch == '\n' || ch == '\v' || ch == '\f' || ch == '\r' || ch == ' '; }
-
@Swordfish
oha dankewas genau ist damit gemeint (Zeile 17) sizeof foo / sizeof *foo
ist das jetzt ein pointer, oder multiplizierst du da?
diese Art mit [ ...] [... ] haben wir in dieser form echt noch nie verwendet ... wenn ich den code durchgehe verstehe ich einiges, aber einiges nicht
zb auch "cout.put" ich kanne nur cout<<
-
cout << str[str_pos].at(l); // aber hier funktioniert es ?
if (str[str_pos].at(l) == 'x') // warum funktioniert es hier mit den einzelnen zeichen nicht { cout << endl; }
-
@mmm_1482_ sagte in Möglichkeit, strings mit mehreren wörtern zu teilen?:
// aber hier funktioniert es nicht?
was meinst du damit?
Wie äußert sich das?
-
@DirkB also zeile 6 wird wirklich jeder buchstabe einzelns ausgegeben, aber in zeile 8 (obwohl genau dieser wert da steht) wird der wert nicht als solches angenommen.
Müsste das in beiden Fällen nicht derselbe Wert sein?for (; str_pos < text; str_pos++)// gehe jeden string durch { for (; l < str[str_pos].length(); ) // gehe jedes Zeichen des jeweiligen strings durch { cout << str[str_pos].at(l); // aber hier funktioniert es nicht? if (str[str_pos].at(l) == 'x') // warum funktioniert es hier mit den einzelnen zeichen { cout << endl; } l++; } l = 0; cout << endl; }
-
@DirkB hä auf einmal funktioniert es XD
ach perfekt! das programm läuftdanke!