std::string {aka std::basic_string<char>}' to 'char*' in assignment|
versuchte, Sie zu öffnen .cpp code::blocks. Habe paar Zeilen Fehler
Teilweise code :
void QSort(string List[], int Left, int Right)
{
int i, j;
char *x;
string TEMP;
i = Left;
j = Right;
x = List[(Left+Right)/2];
do {
while((strcmp(List[i],x) < 0) && (i < Right)) {
i++;
}
while((strcmp(List[j],x) > 0) && (j > Left)) {
j--;
}
if(i <= j) {
strcpy(TEMP, List[i]);
strcpy(List[i], List[j]);
strcpy(List[j], TEMP);
i++;
j--;
}
} while(i <= j);
if(Left < j) {
QSort(List, Left, j);
}
if(i < Right) {
QSort(List, i, Right);
}
}
Ich erhalte diese Fehlermeldung in der Zeile
x = List[(Left+Right)/2];
cannot convert 'std::string {aka std::basic_string}' to 'char*'
in Abtretung|
- möglich, Duplikat der Wie kann ich umwandeln std::basic_string geben, um ein array von char-Typ?
- Warum nicht verwenden Sie das lexikographische Vergleich Operatoren für
std::string
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil Sie nicht kompatibel sind. Müssen Sie rufen Sie ein Mitglied des
std::string
das gibt einenconst char*
.Beachten Sie: dieser Zeiger ist nur gültig für die Lebensdauer des std::string, oder bis Sie Sie ändern das string-Objekt.
Diese Funktion gibt eine
const char*
so müssen Sie zum ändern der definitionx
auschar*
in `const char*.oder noch besser, entfernen Sie die Zeile, und kombinieren Sie die zwei
Infact, hier ist ein umschreiben verwendet standard-C++ algorithmen in (std::string::compare-anstelle von strcmp). Dies kann machen es einfacher für Sie, um den Fokus auf den Algorithmus selbst.
std::string
zu einemconst char*
weil Sie nicht kompatibel sind. Müssen Sie rufen Sie diec_str()
- Methode von string, um dieconst char*
die die std::string verwaltet.string
, Sie zu verwirren:std::string
ist ein Klasse name.char foo[] = "hello";
undchar* foo = "hello";
sind C-style-strings, währendstd::string foo = "hello";
ist ein anderes Tier ganz.std::string::c_str()
gibt eineconst char*
- const, die angibt, "Sie können nicht ändern, was der Zeiger zeigt". Sie brauchen nur zu ändernx
auschar* x;
zuconst char* x;
. Infact, entfernen Sie diechar *x;
Zeile und ändern Sie es oben gezeigt wird.