string to char



  • Moin kann mir wer erklären wie man Daten aus einem char Array in einen string kriegen kann ?

    Hier ist mein Ansatz aber das funktionierte nicht 😞

    char zahlen[10];
    string z;
    z = zahlen[1];
    cout<<z;



  • Mit dem Konstruktor von std::string . Schau sonst mal bei www.cplusplus.com vorbei...



  • string z (&zahlen[0]);

    aber zahlen klingt nich so, als ob das die lösung ist, die du suchst...

    bb



  • oops sry jetzt hab ich was falsches gefragt 😕

    Also bei dem Programm was ich im moment mache wird ein Text aus einer Datei ausgelesen ( c:\\test.txt ).

    Nun will ich mit FileExists überprüfen ob diese Datei Existiert.

    #include <iostream>
    #include <vcl>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    string text[1] = {"c:\\test.txt"};
    char *char_txt;
    
    char_txt = text[1];   // <--- funktioniert nicht :(
    
            if( FileExists( char_txt) )
            {
            ShowMessage("Datei existieret");
    
            }
    
    system("PAUSE");
    }
    


  • weil in text[1] nichts drin ist, sondern in text[0]

    edit:

    und wie ich sehe, willst du dem char* den string zu weisen! dazu musst erst mal speicher allokieren - mit malloc, calloc etc.!

    string foo[1] = {"TEST"};
    
    	const char* bar = foo[0].c_str();
    
    	char* bla = (char*) malloc(foo[0].length()+1);
    	strcpy(bla,foo[0].c_str());
    
    	cout << bar << bla <<endl;
    
    	free(bla);
    	return 0;
    


  • Ok ty.

    Ich werds mir morgen mal genauer anschauen aber jetzt is erst mal Feierabend ^^



  • vergiss das ma ganz schnell wieder...

    #include <string>
    #include <vcl>
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
     string dateiname = "c:/test.txt";
    
     if( FileExists(dateiname.c_str()) )
     {
       ShowMessage("Datei existieret");
     }
    
     system("PAUSE"); //ist auch bäh.. siehe dazu consolen faq
    }
    

    bb

    PS: ohne dir zu nahe treten zu wollen, aber kauf dir ma nen ordentliches C++ buch...



  • ich habe ihm nur den tipp gegeben, wie er aus einem string ein char macht 😉



  • sheddy schrieb:

    ich habe ihm nur den tipp gegeben, wie er aus einem string ein char macht 😉

    Du hast es sicher gut gemeint, aber wenn er im C++-Forum postet, will er wahrscheinlich eher eine C++-Lösung. Und so zeigen wir ihm eine. 🙂


  • Administrator

    Nexus schrieb:

    sheddy schrieb:

    ich habe ihm nur den tipp gegeben, wie er aus einem string ein char macht 😉

    Du hast es sicher gut gemeint, aber wenn er im C++-Forum postet, will er wahrscheinlich eher eine C++-Lösung. Und so zeigen wir ihm eine. 🙂

    Nebst dem, dass sheddy unnötig zusätzlichen Speicher reserviert, obwohl es gar nicht nötig ist, für das Beispiel von blup.

    Grüssli



  • es sind doch nur 2 verschiedene möglichkeiten...vielleicht etwas ungünstig gepostet 😕



  • Ein string ist ein array von char mit abschliessendem Nullzeichen (ANSI-C). Mit der Zuweisung z=string[i] bekomme ich das Zeichen an der i-ten Stelle, beginnend bei Null. Ich verstehe das Problem nicht! Auch wer mit C++ programmiert sollte die grundlegenden Dinge von ANSI-C im Schlaf beherrschen.


  • Administrator

    sheddy schrieb:

    es sind doch nur 2 verschiedene möglichkeiten...vielleicht etwas ungünstig gepostet 😕

    Ja, aber wozu die zweite? Wozu free und malloc, statt new und delete? Wozu überhaupt Speicher anfordern und eine Kopie durchführen? Du kommst auch so an den Speicher von std::string , du hast sogar "Random Access Iterators". Wieso also so eine seltsame Kopie? Und auch wenn man an eine C Funktion ein schreibender Zugriff geben möchte, dann macht man dies wenn schon über std::vector .

    @berniebutt,
    Wie bitte? Was hat das mit dem Thema zu tun? Oder worauf beziehst du dich?

    Grüssli


Anmelden zum Antworten