PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : string nach char



Claudine
31-07-2003, 12:06
Ich möchte einen String nach char konvertieren. Geht das überhaupt? Hat jemand eine Idee?

string s("/home/claudine/C++");
char Home[200];
Home = s.c_str();

// klappt leider nicht.
cout << Home;

anda_skoa
31-07-2003, 12:33
Du kannst nicht auf in Array zuweisen, es gibt keinen operator= für Arrays.

Du musst den String kopieren, siehe strcpy bzw. strncpy

Ciao,
_

Boron
31-07-2003, 13:09
string stringCommand = "gaga";
char* arrayCommand = new char[stringCommand.size()+1];
for( unsigned int i=0; i<stringCommand.size(); i++)
{
arrayCommand[i] = stringCommand[i];
}
arrayCommand[theCommand.size()] = '\0';
Dies gilt für Strings aus der STL.
Was Besseres weiß ich nicht.

PS:
Juhu, soeben 100 Posts geschafft :D.

anda_skoa
31-07-2003, 15:22
Original geschrieben von Boron

Dies gilt für Strings aus der STL.
Was Besseres weiß ich nicht.


Wie gesagt:
man strcpy
man strncpy



NAME
strcpy, strncpy - copy a string

SYNOPSIS
#include <string.h>

char *strcpy(char *dest, const char *src);

char *strncpy(char *dest, const char *src, size_t n);


Wenn man dann noch die Kenntnis hinzunimmt, dass string::c_str einen const char* zurücklieftert und ein Array auch als Pointer auf das erste Element angesprochen werden kann, sollte man mit ein bischen probieren auf eine passable Lösung kommen.

Btw, den HOME Path hardcoden ist vielleicht keine so gute Idee.
Siehe dazu man getenv und
#> env | grep HOME

Ciao,
_

wraith
31-07-2003, 15:30
Die reine C++ Lösung kommt ohne strcpy aus :)


string einString;
....
char* pC = new char[einString.size() + 1];
einString.copy(pC,string::npos);
pC[einString.size()] = 0;