Forum
Tipps
News
Menu-Icon

C++: String in ein Char-Array umwandeln

Hey... Ich programmiere grade Hangman und bin auf der Suche nach einer Möglichkeit um einen String in ein Array von Chars umzuwandeln. Bisher bin ich so weit:

int main()
{
    ifstream f;
    string word, list[100];
    char chr_lst[26], chr;
    int bcount, wlen, k, j, i = 0;
    size_t found;
    f.open("list.txt", ios::in);
    while (!f.eof())
    {
        getline(f, list[i]);
        i = i + 1;
    }
    f.close();
    while (1)
    {
        bcount = 0;
        j = 0;
        k = rand() % (i);
        word = list[k];
        wlen = word.size();
        while (wdone() && !(bcount==6))
        {
            i = 0;
            while ( i != wlen )
            {
                cout << "_ "; //Innerhalb dieser Schleife möchte ich dann "word"
                i = i + 1;    //in ein Array von Chars umwandeln, damit ich die einzelnen Buchstaben besser mit den Eingaben vergleichen kann...
            }
            cout << endl << endl;
            draw(bcount);
            j = 0;
            if (bcount > 0)
            {
                cout << "\nNicht vorhandene Buchstaben:\n";
                while (j != bcount )
                {
                    cout << chr_lst[j];
                    if (j < bcount)
                    {
                        cout << ", ";
                    }
                    j = j + 1;
                }
            }
            cout << "\n\nWelcher Buchstabe ist enthalten? \x28Nur Grossbuchstaben\x29\n" << "Eingabe: ";
            cin >> chr;
            found=word.find(chr);
            if (found!=string::npos)
            {
                cout << "Richtig";
                Sleep(1000);
            }
            else
            {
                chr_lst[bcount]=chr;
                bcount = bcount + 1;
            }
            system("cls");
            if (bcount == 6)
            {
                gameover();
            }
        }
    }
}

Antworten zu C++: String in ein Char-Array umwandeln:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ich würde das gar nicht umwandeln - mit der find()-Funktion des Strings kannst du auch nach einzelnen Zeichen suchen. Siehe dazu: http://www.cplusplus.com/reference/string/string/find/
Ansonsten kannst du natürlich mit dem operator[] oder der at()-Funktion gezielt auf ein Zeichen zugreifen:

String s = ...
char char_array[s.length];
for (int i = 0; i < s.length; i++) {
    char_array[i] = s[i];
    // oder: char_array[i] = s.at(i);
}

Außerdem gibts noch die c_str()-Funktion, die nen Pointer auf das char[] zurückliefert (=der klassische C-"String"): http://www.cplusplus.com/reference/string/string/c_str/

Wunderbar. Dankeschön. ^^

Also ich hab das grade ma ausprobiert und bekomme ne Fehlermeldung ausgegeben... Ich benutze den C++ Builder von Borland Version 3.0 (Build 3.70). Aber warum hat der da so ein Problem mit? Sind dynamische Arrays nicht erlaubt? oO

if (bcount > 0)
   {
      char fword[word.length()]{"_ "}; // "Constant expression required"
      cout << "\nNicht vorhandene Buchstaben:\n";
      while (j != bcount )
      {
         cout << chr_lst[j];
         if (j < bcount)
         {
            cout << ", ";
         }
         j = j + 1;
      }
   }
« Letzte Änderung: 09.08.10, 11:01:30 von TheFrozenOne »

Kann mir da irgendwer helfen? Bitte... :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

IIRC war das mal so, dass die Array-Größe zur Compile-Zeit auswertbar sein musste. C++ sollte diese Restriktion aber mittlerweile nicht mehr haben. Vielleicht ist dein Compiler etwas veraltet? Könntest evtl. mal DevC++ versuchen.
Vielleicht liegts aber auch an dem {"_ "} dahinter. Was soll denn das bewirken? Du kannst ja nicht ein char[] mit nem String initialisieren. Nimm das mal weg und gucke, ob es dann kompiliert.

Jop. Es lag am Compiler... Das "_ " is mir auch aufgefallen. Hab ich schon gemacht. Jedenfalls nutz ich jetzt MS VS C++ 2010. Allerdings hab ich da jetzt andere Compiler-Fehler. Mit denen will ich euch aber jetzt nicht mehr belästigen. ^^

Öhm.

String in Array geht doch so

string zuSuchendesWort = "Banane";
char[] result = zuSuchendesWort.ToCharArray();

Echt so einfach? oO

Sorry ist C# nicht C++


« Seinen eigenen Rechner durch selbst gemachten Virus schützenAuf ein Programm zugreifen?!?! »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...