Problem wandlung std::string -> char

Hallo

Ich habe folgendes Problem. Wenn ich aus einem String wieder ein Char-string machen möchte, bricht mir beim zugriff auf das Char-string die Anwendung ab. Ich brauche ein Char-array da die anderen Funktionen kein const char vertragen.

der Quellcode sieht wie folgt aus:

int main(int argc, char* argv[]){
std::string Application;
char * cAnw = new char(strlen(argv[0])+1);

Application = argv[0];
strcpy(cAnw,argv[0]);

CMLFBGEN * MLFB = new CMLFBGEN(Application, cAnw);

}

CMLFBGEN::CMLFBGEN(std::string sAppl, char * cApp){

sAppPath = sAppl.substr(0,sAppl.rfind("\"));
sFileErgCSV = sAppPath + „\gepa\MLFBLog.cvs“;

}

bool CMLFBGEN::SetErgCSVFile(void){
try{
char * ctemp = new char(strlen(sFileErgCSV.c_str() +1));
std::strcpy(ctemp, sFileErgCSV.c_str());
std::cout

Hallo

Ich habe folgendes Problem. Wenn ich aus einem String wieder
ein Char-string machen möchte, bricht mir beim zugriff auf das
Char-string die Anwendung ab. Ich brauche ein Char-array da
die anderen Funktionen kein const char vertragen.

char * ctemp = new char(strlen(sFileErgCSV.c_str() +1));
std::strcpy(ctemp, sFileErgCSV.c_str());

 char\* ctemp = new char( strlen(sFileErgCSV.c\_str()+1 ) );

Wow, gleich 2 kritische Fehler in einem Ausdruck :wink:

Grüße

CMБ

Hallo

Was ist jetzt daran kritisch und wie soll ich es verbessern. Da ich noch Anfänger bin würde ich mich über Hilfe freuen.

Grüße Sven

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo

Was ist jetzt daran kritisch und wie soll ich es verbessern.

aus

 char \* cAnw = new char( strlen(argv[0]) + 1 );

wird

 char \* cAnw = new char[strlen(argv[0]) + 1 ];

und aus

 char \* ctemp = new char( strlen( sFileErgCSV.c\_str()+1 ) );

wird

 char \* ctemp = new char[sFileErgCSV.length() + 1];

Da ich noch Anfänger bin würde ich mich über Hilfe freuen.

http://www.cppreference.com/cppstring/index.html

Grüße

CMБ

1 Like

Hallo

das char * ctemp = new char[sFileErgCSV.length() + 1]
war genau der knackpunkt. Da habe ich wohl falsch gedacht.

Danke schön

Grüße Sven

Was ist jetzt daran kritisch und wie soll ich es verbessern.

aus

char * cAnw = new char( strlen(argv[0]) + 1
);

wird

char * cAnw = new char[strlen(argv[0]) + 1
];

und aus

char * ctemp = new char( strlen(
sFileErgCSV.c_str()+1 ) );

wird

char * ctemp = new
char[sFileErgCSV.length() + 1];

Da ich noch Anfänger bin würde ich mich über Hilfe freuen.

http://www.cppreference.com/cppstring/index.html

Grüße

CMБ