Beim Durchlesen Datei mit ifstream
Frage
Ich versuche, aus einer Datei zu lesen: Die Datei ist mehrzeilige und im Grunde muss ich über jedes „Wort“ gehen. Wort ist alles nicht Raum.
Beispieleingabedatei wäre:
Beispieldatei:
Test 2d
Wort 3.5
Eingang
{
Test 13.5 12.3
eine andere {
Testen 145,4
}
}
So habe ich versucht, so etwas wie folgt aus:
ifstream inFile(fajl.c_str(), ifstream::in);
if(!inFile)
{
cout << "Cannot open " << fajl << endl;
exit(0);
}
string curr_str;
char curr_ch;
int curr_int;
float curr_float;
cout << "HERE\n";
inFile >> curr_str;
cout << "Read " << curr_str << endl;
Das Problem ist, wenn es neue Zeile liest es hängt nur. Ich las alles, was vor dem Test 13.5 aber sobald es diese Zeile erreicht tut es nichts zu tun. Wer kann mir sagen, was ich falsch mache? Jede bessere Vorschläge, wie dieses ??? tun
Ich muss im Wesentlichen durch Datei gehen und ein „Wort“ (nicht weiß char) zu der Zeit gehen. I
Danke
Lösung
Sie öffnen eine Datei ‚inFile‘, sondern von der ‚std :: cin‘ einen besonderen Grund liest?
/*
* Open the file.
*/
std::ifstream inFile(fajl.c_str()); // use input file stream don't.
// Then you don't need explicitly specify
// that input flag in second parameter
if (!inFile) // Test for error.
{
std::cerr << "Error opening file:\n";
exit(1);
}
std::string word;
while(inFile >> word) // while reading a word succeeds. Note >> operator with string
{ // Will read 1 space separated word.
std::cout << "Word(" << word << ")\n";
}
Andere Tipps
Nicht sicher, wie „im Geist“ der iostream-Bibliothek das ist, aber man könnte es mit unformatierter Eingabe zu tun. So etwas wie:
char tempCharacter;
std::string currentWord;
while (file.get(tempCharacter))
{
if (tempCharacter == '\t' || tempCharacter == '\n' || tempCharacter == '\r' || tempCharacter == ' ')
{
std::cout << "Current Word: " << currentWord << std::endl;
currentWord.clear();
continue;
}
currentWord.push_back(tempCharacter);
}
funktioniert das?