C++ String in Char Array umwandeln?

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Hallo,

Ich habe ein Problem mit der Funktion fopen. Sie erwartet so weit ich das sehe ein Array of Char. Ich möchte aber kein Array an die Funktion übergeben sondern einen String.

Wie kann ich den String jetzt in ein Array umwandeln?

Code:
void WriteTextIntoFile(std::string sText,std::string sFileName)
{
	FILE *file;
	file = fopen(sFileName,"a+t");

}

--------------------Konfiguration: test - Win32 Debug--------------------
Kompilierung läuft...
FileIO.cpp
C:\Programme\Microsoft Visual Studio\MyProjects\test\FileIO.cpp(8) : error C2664: 'fopen' : Konvertierung des Parameters 1 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'const char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
Fehler beim Ausführen von cl.exe.

test.exe - 1 Fehler, 0 Warnung(en)
 
Ja, du musst c_str() verwenden, da die Funktion einen String im C-Stil erwartet.

Gruß,

badday
 
MATRIX_Morpheus schrieb:
Ähm... Nein. Zumindest nicht in C++

Ein String wird immer intern als ein Array aus Char gespeichert. Egal welche Sprache.

Nur einige Sprachen speichern zusätzlich ganz am Anfang des Arrays die Länge des Arrays bzw. Strings. Damit lautet dann der dereferenzierte Wert auf das erste Zeichen nicht 0, sondern 1.
 
Das Problem liegt meiner Meinung nach darin, dass die Funktion einen String im C-Stil erwartet (mit 0 abgeschlossen). Liege ich da richtig?

Gruß,

badday
 
@Whiz-zarD: Wie's intern abgespeichert wird, ist nicht relevant. In C++ ist ein std::String als
PHP:
typedef basic_string<char> string;
definiert. Wie es intern implementiert wird, ist nicht vorgeschrieben (teilweise nicht mal die Laufzeiten der einzelnen Operationen; also wäre z.b. eine Implementierung als doppelt verkettete Liste möglich) und hängt allein von der Library ab (auch wenns natürlich als array am meisten Sinn macht).
Wenn deine Aussage stimmen würde, würde
PHP:
typedef char* string;
(oder so ähnlich) gelten.
 

Ähnliche Themen

Zurück
Oben