Avatar billede ladyhawke Novice
07. august 2002 - 10:47 Der er 5 kommentarer og
1 løsning

const char * konverter til char *

Hvordan gør man lige det?

Jeg har en funktion der tager en char* som argument men jeg har en string (const char*), hvordan klarer jeg den...
Avatar billede chries Nybegynder
07. august 2002 - 10:55 #1
i c++ kan du cast const væk

func( const_cast<char*>(pConstChar) );
Avatar billede chries Nybegynder
07. august 2002 - 10:56 #2
men det bedte ville være at lave funktionen til at tage en const pointer (skidt ting at pille i const ting).
Avatar billede ladyhawke Novice
07. august 2002 - 11:00 #3
jeg kan ikke lige pille i funktionen:

char *strtok( char *strToken, const char *strDelimit );

Jeg får følgende fejl hvis jeg prøver det "bissede" forslag:

cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'
        Conversion requires a constructor or user-defined-conversion operator, which can't be used by const_cast or reinterpret_cast

Kan man gøre et eller andet så en string kan konverteres til en char*? Det skal bare kunne gøres dynamisk...
Avatar billede chries Nybegynder
07. august 2002 - 11:06 #4
#include "iostream.h"
#include <string>

using namespace std;

void func( char *p )
{

}

int main()
{
    string t;

    t = "OST";

    func( const_cast<char*>(t.c_str()) );

}
Avatar billede ladyhawke Novice
07. august 2002 - 11:10 #5
Det ser ud til at virke, nu skal jeg bare modificere min kode lidt så jeg kan udnytte funktionen :o)
Avatar billede soepro Nybegynder
13. august 2002 - 12:00 #6
Det er noget gris at caste en const char* til char* - hele ideen med const er jo netop at du ikke må kunne ændre i den. Hvis den streng du har vitterlig er en cons, bør du lave en ny, temporær, variabel, gemme const værdien i den og som bruge den nye variabel til kaldet:

const char* fixText = "Denne tekst er const";

char *ptrStr;
char *tmpStr;
int  n;

tmpStr = new char[strlen(fixText)+1];
strcpy(tmpStr, fixStr);
ptrStr = strtok(tmpStr, " ");
n = 0;
while (ptrStr != NULL)
{
  cprintf("%d. del-streng er: \'%s\'\r\n", ++n, ptrStr);
  ptrStr = strtok(NULL, " ");
}
delete tmpStr;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester