Length of string

pepsi_gx

Erfahrenes Mitglied
Morgen!

zum Überschreiben von ner Datei in einen String habe ich folgendes:

Code:
string WriteFileToStr(char* Filename)
{
	std::string c;
	ifstream f;

	if(!f.good())
	{
		return false;
	}
          
	f.open(Filename);	
	getline(f, c);
	cout << "string c: " + c << endl; 
	cout << "with size: " << c.size() << endl;
}

c.size() liefert mir die Länge des Strings von 2143 zurück, die für mich zu wenig ist.

Gibt's die Möglichkeit, die Länge des Strings zu verlängern?
 
Hi

ich mag mich irren, aber für mich sieht es so aus als würdest du die Datei auslesen , und der aktuelle Inhalt der Datei ist "2143 groß".
 
Zuletzt bearbeitet:
Hi.
Morgen!

zum Überschreiben von ner Datei in einen String habe ich folgendes:

Code:
string WriteFileToStr(char* Filename)
{
	std::string c;
	ifstream f;

	if(!f.good())
	{
		return false;
	}
          
	f.open(Filename);	
	getline(f, c);
	cout << "string c: " + c << endl; 
	cout << "with size: " << c.size() << endl;
}
Also erstmal hast du das ziemlich komisch benannt, du schreibst ja keine Datei in einen String. Du willst die Datei lesen und den Dateiinhalt in einen String kopieren.

Dann ist die Reihenfolge deiner Anweisungen etwas seltsam. Und du solltest nie die good(), bad() und eof() Methoden verwenden, wenn du nicht ganz genau weißt wozu sie da sind und was sie wann anzeigen.
c.size() liefert mir die Länge des Strings von 2143 zurück, die für mich zu wenig ist.
Naja, du liest ja auch nur die erste Zeile aus. Oder was dachtest du was getline macht?
Gibt's die Möglichkeit, die Länge des Strings zu verlängern?
Ja, std::string::resize().

Gruß
 
Hi.
Naja, du liest ja auch nur die erste Zeile aus. Oder was dachtest du was getline macht?

getline(fstream f, string s) kopiert zeilenweise den Inhalt der Datei in den String, stimmts?
Ich bin sicher, daß der Inhalt von meiner Datei länger als 2143 ist, was übrig bleibt, kommt aber nicht in den String mehr rein. Daher frage ich mich, kann es an der Einschränkung von Stringslänge liegen?
 
getline(fstream f, string s) kopiert zeilenweise den Inhalt der Datei in den String, stimmts?
Mit getline wird 1 Zeile eingelesen.
Ich bin sicher, daß der Inhalt von meiner Datei länger als 2143 ist, was übrig bleibt, kommt aber nicht in den String mehr rein.
Weil du nur 1 Zeile einliest.
Daher frage ich mich, kann es an der Einschränkung von Stringslänge liegen?
Nein.

Gruß
 
Mit getline wird 1 Zeile eingelesen.
Das verwirrt mich. Schau bitte mal hier:
MSDN hat gesagt.:
Extract strings from the input stream line-by-line.

template<class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str
);

template<class CharType, class Traits, class Allocator>
basic_istream<CharType, Traits>& getline(
basic_istream<CharType, Traits>& _Istr,
basic_string<CharType, Traits, Allocator>& _Str,
const CharType _Delim
);

Weil du nur 1 Zeile einliest.
Wenn es wirklich so ist, wie habe ich den String von 2143 bekommen?(ist "2143" nicht etwas zu lang für eine ZEILE?)
 
Zurück