while-Schleife terminiert nicht.
-
Honky schrieb:
Aber in vielen C++-Büchern werden ja auch C-Strings benutzt.
Ich äußere mal Zweifel an der Qualität deiner Literatur. Dirk Louis? Jürgen Wolf? Galileo-Verlag?
-
Galileo Verlag

-
Warum verwendest du ein #define als Konstante statt
const
-
IrgendeinName schrieb:
Warum verwendest du ein #define als Konstante statt
constHat er schon erklärt:
Honky schrieb:
Galileo Verlag

-
Das hab ich im Eifer des Gefechts einfach schnell als #define gemacht. Ich ändere
es aber in meinem Programm noch ab.
-
SeppJ schrieb:
IrgendeinName schrieb:
Warum verwendest du ein #define als Konstante statt
constHat er schon erklärt:
Honky schrieb:
Galileo Verlag

LOL

Ja ok, ich habs verstanden. Ich werde mir einen besseren Stil aneignen.
-
Juergen unser alter Schlawiner schreibt nicht explizit, dass Makros boese sind. Er zeigt nur Unterschiede zwischen Konstanten und (Skalar-Literal) Makros.
-
Honky schrieb:
Ich werde mir einen besseren Stil aneignen.

Eigne Dir lieber ein gutes Buch an. In Sepps Signatur gibt es einen Link mit Buchempfehlungen.
-
Sone schrieb:
(Skalar-Literal) Makros.
Woher nimmst du nur die Wörter.

-
Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie
if( 1==sscanf(" blafasel\t\n","%49s",chararray50) ) puts(chararray50); else puts("EOF oder Lesefehler");Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.
-
Wutz schrieb:
Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie
if( 1==sscanf(" blafasel\t\n","%49s",chararray50) ) puts(chararray50); else puts("EOF oder Lesefehler");Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.
tinnef.
ich nehme an, das wort ist vorher nicht bekannt. dann nimmt man funktionen wie find, copy, etc. aus der string-bibliothek.
http://www.cplusplus.com/reference/string/string/
-
Oder direkt boost::split
-
Wutz schrieb:
Für das Separieren eines durch Whitespaces getrennten Teilstrings aus einem String nimmt man sscanf und einen Einzeiler wie
if( 1==sscanf(" blafasel\t\n","%49s",chararray50) ) puts(chararray50); else puts("EOF oder Lesefehler");Und der Ausgangsstring darf sogar const sein, bzw. implizit const als Stringliteral.
Sind wir im C-Forum? Geh bloss weg mit diesem Dreck...

std::string hw = "Hallo Welt!", erstesWort; std::istringstream(hw) >> erstesWort;Oder dein Beispiel (wenn ich es verstanden habe):
std::string hw = " blafasel\t\n", erstesWort; std::istringstream(hw) >> std::ws >> erstesWort;@Eisflamme: Obiges ist einfacher und braucht kein boost :p
Sorry fuer die ganzen edits.
-
Sone schrieb:
Sind wir im C-Forum? Geh bloss weg mit diesem Dreck...

armes deutschland ...

-
b.b. schrieb:
Sone schrieb:
Sind wir im C-Forum? Geh bloss weg mit diesem Dreck...

armes deutschland ...

Nicht annaehrend so arm wie dein Post an Argumentation und Sinn.
-
Für ein Element ist das sicher am Besten so.
Für mehrere packt split das aber alles schon brav in einen vector. Gut, ein kleines while und push_back darauf hin geht wohl auch.Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?
-
Eisflamme schrieb:
Für ein Element ist das sicher am Besten so.
Für mehrere packt split das aber alles schon brav in einen vector. Gut, ein kleines while und push_back darauf hin geht wohl auch.O ja:
std::vector<std::string> strings; std::istringstream stream(" das ist die geschischte\t von\nbla"); while( stream ) { strings.push_back( std::string() ); stream >> std::ws >> strings.back(); }Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?
Nope.

-
Sone schrieb:
Eisflamme schrieb:
Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?
Nope.

Doch. Er meinte:
std::string hw = "Hallo Welt!", erstesWort; std::istringstream(hw) >> erstesWort; // Error: no match for 'operator>>' in 'std::basic_istringstream<char>((*(const __string_type*)(& hw)), (std::_Ios_Openmode)8u) >> erstesWortUnd das hatte ich bereits ganz oben geschrieben.
-
[latex]
Gugelmoser schrieb:
Sone schrieb:
Eisflamme schrieb:
Diese Variante von Dir geht aber erst mit C++11 so kurz, richtig?
Nope.

Doch. Er meinte:
std::string hw = "Hallo Welt!", erstesWort; std::istringstream(hw) >> erstesWort; // Error: no match for 'operator>>' in 'std::basic_istringstream<char>((*(const __string_type*)(& hw)), (std::_Ios_Openmode)8u) >> erstesWortUnd das hatte ich bereits ganz oben geschrieben.
Ah shit, jetzt sehe ich es auch. Klar, hast Recht.
Dachte, ging schon immer mit rtemporaeren Objekten.
-
Sone schrieb:
Ah shit, jetzt sehe ich es auch. Klar, hast Recht.
Dachte, ging schon immer mit rtemporaeren Objekten.Nö, weil ein temporäres Objekt nicht an eine
non-const lvalue referencegebunden werden darf.