 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Markus Krebl Guest
|
Posted: Sun Apr 11, 2004 6:05 pm Post subject: Zeilen einlesen |
|
|
Hallo,
ich will mehrere Zeilen einlesen, die aus bestimmten Zeichen bestehen,
auch Leerzeichen am Anfang, dazwischen und am Ende.
Mit cin scheint das nicht ganz hinzuhauen, wie kann ich das lösen ?
z.B.
O S OO
OOOOOO
OOO OOO
OOO OO
OOO Z O
Diese String sollen alle gleich lang ein, ein paar haben Leerzeichen am
Schluß. Diese möchte ich in ein Array von Strings einlesen.
Grüsse, Markus
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Ludwig Pumberger Guest
|
Posted: Mon Apr 12, 2004 8:18 am Post subject: Re: Zeilen einlesen |
|
|
Markus Krebl schrieb:
| Quote: | ich will mehrere Zeilen einlesen, die aus bestimmten Zeichen bestehen,
auch Leerzeichen am Anfang, dazwischen und am Ende.
Mit cin scheint das nicht ganz hinzuhauen, wie kann ich das lösen ?
z.B.
O S OO
OOOOOO
OOO OOO
OOO OO
OOO Z O
Diese String sollen alle gleich lang ein, ein paar haben Leerzeichen am
Schluß. Diese möchte ich in ein Array von Strings einlesen.
|
Array? Tu's nicht! Woher weisst du wie gross das Array sein soll?
Ich würde grob folgendes vorschlagen(Fehlerbehandlung fehlt):
#include <fstream>
#include <string>
#include <vector>
int main()
{
std::ifstream in(...);
std::string line;
std::vector<std::string> data;
while(std::getline(in, line))
data.push_back(line);
return 0;
}
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Mon Apr 12, 2004 8:56 am Post subject: Re: Zeilen einlesen |
|
|
Markus Krebl <markus.krebl (AT) gmx (DOT) net> writes:
| Quote: | ich will mehrere Zeilen einlesen, die aus bestimmten Zeichen bestehen,
auch Leerzeichen am Anfang, dazwischen und am Ende.
Mit cin scheint das nicht ganz hinzuhauen, wie kann ich das lösen ?
|
Doch doch, das sollte schon gehen mit std::cin. Was hast Du denn versucht?
| Quote: | z.B.
O S OO
OOOOOO
OOO OOO
OOO OO
OOO Z O
Diese String sollen alle gleich lang ein, ein paar haben Leerzeichen
am Schluß. Diese möchte ich in ein Array von Strings einlesen.
|
Versuch mal
std::vector<std::string> lines;
std::string line;
while (getline(std::cin,line))
lines.push_back(line);
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Werner Salomon Guest
|
Posted: Mon Apr 12, 2004 11:13 am Post subject: Re: Zeilen einlesen |
|
|
Markus Krebl <markus.krebl (AT) gmx (DOT) net> wrote
| Quote: | ich will mehrere Zeilen einlesen, die aus bestimmten Zeichen bestehen,
auch Leerzeichen am Anfang, dazwischen und am Ende.
Mit cin scheint das nicht ganz hinzuhauen, wie kann ich das lösen ?
z.B.
O S OO
OOOOOO
OOO OOO
OOO OO
OOO Z O
Diese String sollen alle gleich lang ein, ein paar haben Leerzeichen am
Schluß. Diese möchte ich in ein Array von Strings einlesen.
|
Hallo Markus,
das sollte mit der Template-Funktion 'getline' zu machen sein. Etwa
so:
#include <iostream> // cin, cout
#include <string> // string, getline
#include <vector>
int main() {
using namespace std;
cout << "Ihre Eingabe bitte - beenden mit x " << endl;
vector< string > arr; // Array von Strings
for( string zl; getline( cin, zl ) && zl != "x"; ) {
// 'zl' enthält jetzt die Zeile
// .. 'zl' ggf. mit Leerzeichen auffüllen
arr.push_back( zl );
}
// ...
Falls Du eine MS VC6 Entwicklungsumgebung mit der mitgelieferten STL
benutzt, solltest Du vorher noch z.B. hier nachschauen:
<http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&threadm=f2689e1c.0201281312.25f2bf59%40posting.google.com&rnum=1&prev=/groups%3Fhl%3Dde%26lr%3D%26ie%3DISO-8859-1%26q%3Dgetline%2Bsalomon%26btnG%3DSuche%26meta%3Dgroup%253Dde.comp.lang.iso-c%25252B%25252B>
getline hat in dieser Implementierung nämlich einen Fehler.
Gruß
Werner
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|