Belastbarkeit der String Streams
-
Bulli schrieb:
Der String hilft einem ja schon bei kleinsten Aufgaben nicht. Z.B. wenn ich einen int-Wert in einen String hängen will, kann mir die String-Klasse schon nicht helfen. Also, deine Frage ist doch irgendwie falsch.
Ich habe in diesem Thread bisher keinen Hinweis darauf gefunden, dass mehr Funktionalität als das reine Speichern von Text benötigt wäre. Und inwiefern soll (m)eine Frage falsch sein?
Wikinger75 schrieb:
Da gebe ich Bulli Recht...
Du musst halt wissen, ob du diese Aufgaben wirklich brauchst. Denn Streams sind massiv und haben auch gewisse Einschränkungen; zum Beispiel können sie nicht kopiert werden und sind langsamer. Sie können Fehlerstati annehmen, die du auch abfragen musst. Grundsätzlich sind Streams und Strings zwei ganz verschiedene Dinge.
-
Nexus schrieb:
Ich habe in diesem Thread bisher keinen Hinweis darauf gefunden, dass mehr Funktionalität als das reine Speichern von Text benötigt wäre. Und inwiefern soll (m)eine Frage falsch sein?
Wikinger75 schrieb:
2.)
Nimmt er auch Manipulatoren an wie endl?
-
Bulli schrieb:
Nexus schrieb:
Ich habe in diesem Thread bisher keinen Hinweis darauf gefunden, dass mehr Funktionalität als das reine Speichern von Text benötigt wäre. Und inwiefern soll (m)eine Frage falsch sein?
Wikinger75 schrieb:
2.)
Nimmt er auch Manipulatoren an wie endl?Und was macht
std::endl, was man mit einemstd::stringnicht machen kann?
std::string += '\n'; // Flush unnötig, da automatisch.Grüssli
-
Dravere schrieb:
Bulli schrieb:
Nexus schrieb:
Ich habe in diesem Thread bisher keinen Hinweis darauf gefunden, dass mehr Funktionalität als das reine Speichern von Text benötigt wäre. Und inwiefern soll (m)eine Frage falsch sein?
Wikinger75 schrieb:
2.)
Nimmt er auch Manipulatoren an wie endl?Und was macht
std::endl, was man mit einemstd::stringnicht machen kann?
std::string += '\n'; // Flush unnötig, da automatisch.Bitte mal seine Frage genau durchlesen! Er hat gefragt, ob man Manipulatoren wie endl benutzen kann. Hat nicht gefragt, ob man nur endl benutzen kann.
Oder wie willst du z.B. hex, oct, noshowpoint u.a. wie unter http://www.cplusplus.com/reference/iostream/manipulators/ zu sehen, bei string benutzen?
-
Bulli schrieb:
Bitte mal seine Frage genau durchlesen! Er hat gefragt, ob man Manipulatoren wie endl benutzen kann. Hat nicht gefragt, ob man nur endl benutzen kann.
Oder wie willst du z.B. hex, oct, noshowpoint u.a. wie unter http://www.cplusplus.com/reference/iostream/manipulators/ zu sehen, bei string benutzen?
Ich weiss nicht, ich finde
hexundoctsind keine Manipulatoren wie endl. Es sind Manipulatoren, aber ihr Zweck ist ein ganz anderer alsendl.endlwird sehr häufig für den Zweck missbraucht, einfach eine neue Zeile anzufangen. Daher würde es mich nicht erstaunen, wenn er tatsächlich nurendlbenutzen will. Gut, dass ist vielleicht ein wenig Interpretation, aber ich finde es klüger, solche Dinge klarzustellen, als sie einfach totzuschweigen.Grüssli
-
endl wird sehr häufig für den Zweck missbraucht, einfach eine neue Zeile anzufangen
Wenn du zwei Sätze hast, die du in zwei Zeilen ausgeben willst, benutzt du ein '\n' im Ersten?! Sorry, falls ich das aus dem Zusammenhang gerissen hab.
-
moagnus schrieb:
endl wird sehr häufig für den Zweck missbraucht, einfach eine neue Zeile anzufangen
Wenn du zwei Sätze hast, die du in zwei Zeilen ausgeben willst, benutzt du ein '\n' im Ersten?! Sorry, falls ich das aus dem Zusammenhang gerissen hab.
Ich versteh die Frage nicht so recht. Meinst du sowas:
#include <iostream> int main() { std::cout << "Dies ist die erste Zeile!" << '\n' << "Dies ist die zweite Zeile!" << std::endl; return 0; }Ja, das mache ich durchaus. Ich mache auch manchmal sowas, kommt immer auf die Stimmung und Situation an

#include <iostream> int main() { std::cout << "Dies ist die erste Zeile!\n" "Dies ist die zweite Zeile!" << std::endl; return 0; }Grüssli
-
Ja, die Frage war so gemeint.
Und auf std::endl verzichtest du aus Performance-Gründen oder warum? Bin mit dem Flushen immer ganz sorglos umgegangen.
-
Bulli schrieb:
Nexus schrieb:
Ich habe in diesem Thread bisher keinen Hinweis darauf gefunden, dass mehr Funktionalität als das reine Speichern von Text benötigt wäre. Und inwiefern soll (m)eine Frage falsch sein?
Wikinger75 schrieb:
2.)
Nimmt er auch Manipulatoren an wie endl?Wer sagt, dass er wirklich
std::endlbraucht und ihm nicht ein einfacher Zeilenumbruch'\n'reicht? Es kommt oft vor, dass man als Fragesteller bereits eine konkrete Idee für etwas im Kopf hat, obwohl man es vielleicht anders machen will.
-
moagnus schrieb:
Ja, die Frage war so gemeint.
Und auf std::endl verzichtest du aus Performance-Gründen oder warum? Bin mit dem Flushen immer ganz sorglos umgegangen.Performance? Ehm, nein, eher nicht. Es ist mehr eine Frage der Funktionalität bei mir. Ein
std::endlist nunmal nicht dazu gedacht, nur eine neue Zeile zu beginnen. Man kann sich natürlich darüber streiten. Ich habe es nie nachgemessen, nehme aber nicht an, dass es einen wirklich messbaren Performanceunterschied macht.Ich wollte in meinem ursprünglichem Post ja nur darauf hinaus, dass man den Manipulator
std::endlmeistens nur dazu verwendet, um eine neue Zeile zu beginnen. Also Wikinger75 womöglich jeweils nur neue Zeilen beginnen möchte und nicht wirklich Manipulatoren benötigt.Grüssli
-
Dravere schrieb:
Es ist mehr eine Frage der Funktionalität bei mir. Ein
std::endlist nunmal nicht dazu gedacht, nur eine neue Zeile zu beginnen.
-
endl wird sehr häufig für den Zweck missbraucht, einfach eine neue Zeile anzufangen.
Das klang nur so, als ob es irgendwelche Probleme mit sich bringen würde.