Textdatei auslesen
-
@Makconner
Diesen dreizeiler solltest du nach der Lektüre von
http://www.c-plusplus.net/forum/viewtopic.php?t=39469
fast selbst schreiben können. Sollten nach dem Lesen allerdings doch noch *konkrete* Fragen auftauchen, kannst du die gerne hier stellen.
-
Danke für die Verlinkung ...
Nächste Frage:
Problem: ich habe einen String und brauche aus diesem String nur einen kleinen Auszug.... also genau Zeichen 6 bis 10 .. also nur diese 5 Zeichen. Ich möchte jetzt dieses Wort aus 5 Zeichen in eine variable speichern...
Wie muss diese Zeile leuten.
Danke schonmal an die die eine kompetente Antwort liefern WOLLEN.
-
Jeder WILL dir die kompetente Antwort liefern. Je nachdem wieviel du dafür geben WILLST. Ein kleines bisschen eigene Denkarbeit wird man doch wohl noch erwarten dürfen...
-
Makconner schrieb:
Danke schonmal an die die eine kompetente Antwort liefern WOLLEN.
Wollen tut jeder!
Nur kann auch auch selber überlegen, und zu dem thema gibt es genug threads...das heißt man muss nicht mal überlegen, sondern nur Suche benutzen!Aber ein denkanstoß...schau dir in der Hilfe mal Methoden für string an, vielleicht findest da was........!!!
-
Hallo Makconner
also ich weiß jetzt nicht ob das die einfachste und beste Möglichkeit is aber so würd ichs machen:
String alt, neu="";
/* Also alt ist der String den du hast
und im String neu speicherst du dann Buchstabe 6-10 */for(int i=6;i<=10;i++)
{
neu += alt[i];
}so jetzt hast du in deinem neuen String die Buchstaben 6-10 deines ursprünglichen Strings. Ich hoffe so hast du die Frage gemeint und ich hab nichts falsch verstanden.
Mfg _Ocin_
-
wieso nich so?
string test = ("1234567890"); string test2 = test.substr(5,5); cout<<test2<<endl;
-
Makconner schrieb:
Nächste Frage:
Problem: ich habe einen String und brauche aus diesem String nur einen kleinen Auszug.... also genau Zeichen 6 bis 10 .. also nur diese 5 Zeichen. Ich möchte jetzt dieses Wort aus 5 Zeichen in eine variable speichern...
Wie muss diese Zeile leuten.
Danke schonmal an die die eine kompetente Antwort liefern WOLLEN.
Genau das selbe wollte ich auch schon mal machen. War aber zu faul mich selber mal ein wenig schlau zu machen oder gar in die Klassen die ich verwende einzuarbeiten.
Wenn du also jemanden gefunden hat der dir erklärt wie man die std::string's substr verwendet sag mir Bescheid, ja?
@_Ocin_ auch wenn du anders zählst, in C++ fängt vieles bei 0 an
-
Ja, vor allem wenn man bedenkt, dass die Zählung bei 0 beginnt...
Edit: Verdammt, war das knapp...
-
ja und wenn er sagt er will den 6. buchstaben aus einem string das is mir schon klar das das der an der 7. stelle im wort is, aber wenn er den 6. will...
und ich hab schon bereits vermutet das es den substing command oder sowas ähnliches gib, kenne ihn selber aber nur von java und bei c++ hab ich jetzt nicht sooooooooooooo viel mit stringoperationen am hut ....
naja auserdem bin ich doch selber noch ein noob also net böse sein !
-
Viele Dank Leute....
das war hilfreich.. ich dachte schon das ich jetzt angemacht werde, weil ich zu dämlich bin... aber ich bin euch für eure Antworten dankbar...
Super...
MfG ... Makconner
-
muss man damit der for - Befehl funktioniert etwas deklarieren?
-
Afaik ist das eine Schleife und kein Befehl. (Oder kann man dazu auch Befehl sagen?)
Ne, du musst nichts deklarieren.
Z.B.:
for(unsigned int i = 0; i < 10; ++i) std::cout << i + 65 << " ";
Caipi
-
ok.. habs gemerkt...
int main() { cout << "Eingabe des Textes => "; getline(cin,Text); cout << Text << endl; lesen(); while(!ein.eof()) { ende=0; ende2=0; anfang=0; anfang2=0; ende=Zeile.find(":"); ende=ende-1; anfang=0; for(int a=anfang;a<=ende;a++) { Englisch += Zeile[a]; } anfang2=ende+2; ende2=Zeile.find("::"); ende2=ende2-1; for(int a=anfang2;a<=ende2;a++) { Uebersetzung += Zeile[a]; } cout << Englisch << " " << Uebersetzung << endl; lesen(); } return 0; } void lesen(void) { getline(ein,Zeile); }
kann mir einer sagen warum sich die schleife nicht wiederholt.. obwol sie es vorher gemacht hat? ... hab ich was gelöscht? .. ich sehs nicht
das Prog läuft sauber durch.. aber nur ein mal... die Textdatei hat aber zwei zeilen.. daher müsste es zweimallaufen... was es aber nicht macht...
-
Also ich glaube nicht, das das Programm in dem Zustand jemals gelaufen ist.
Und nochmal: finix (und andere) haben dir den Tipp gegeben std::string::substr() zu nutzen. Das ist eine Methode von std::string, die dir die Schleifen zum Rauskopieren spart.
Edit: Ein Wort zu viel...
-
naja da muss ich dich halt enttauschen... aber es läuft... ganz nach wunsch... aber eben nur ein mal...
.. da ist ja noch was... die positionen an denen man die Teile herrausnehmen muss müssen ja erst ermittelt werden, die stehen nicht fix fest... daher habe ich das auch noch ermittel.. naja alles geht... nur leider ohne wiederholung...
zum Teufen... ich bin blind den
Fehler zu sehen
-
Makconner schrieb:
naja da muss ich dich halt enttauschen... aber es läuft... ganz nach wunsch... aber eben nur ein mal...
.. da ist ja noch was... die positionen an denen man die Teile herrausnehmen muss müssen ja erst ermittelt werden, die stehen nicht fix fest... daher habe ich das auch noch ermittel.. naja alles geht... nur leider ohne wiederholung...
zum Teufen... ich bin blind den
Fehler zu sehen
also wenn das läuft dann verwendest du bestimmt keinen C oder C++ compiler.
meiner mag es gar nicht wenn man variablen nicht deklariert oder nicht deklarierte funktionen verwendet
K.
-
Deine Namensgebung ist wirklich sehr lobenswert.
Seas Name
-
dann erklär uns doch mal genau dein problem, positionen zu ermitteln etc is doch kein problem...darauf dann substring...also red mit uns...
-
Och man.... natürlich ist das nur der Main-Auszug... also wirlich !! ...
das Problem ist das die schleife sich nicht wiederholt... aber ich schreib das jetzt nochmal.. eventuell hab ich was gelöscht
-
na ok.. hier der neue, ganze Code
#include <iostream> #include <string> #include <fstream> using namespace std; ifstream ein("Hirn.txt"); string Zeile; void lesen(void); int main() { lesen(); while(!ein.eof()) { cout << Zeile << endl; lesen(); } return 0 ; } void lesen(void) { getline(ein,Zeile); }
in der Textdatei sind zwei Zeile...
eigentlich sollten beie Zeine nach und nach eingelesen und ausgedruckt werden... aber er liest nur die erste und dann is ZICK....wieso wiederholt er nicht?