Möglichkeit, strings mit mehreren wörtern zu teilen?
-
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!