String zu Char



  • Hi@all

    Ich versuch in einer Funktion einen String in einzellne Zeichen zu zerlegen und dies in ein char Array einzulesen. Doch leider scheitere ich an der Zerlegung des Strings in seine Elemente und außerdem kenne ich nicht jede Methode der Stringklasse. Wenn mir also jemand einen Tip geben könnte wäre das sehr hilfreich.

    Cu
    André



  • Meinst du sowas?

    string str="Hallo";
    for(int i=0;i<str.length();i++)
     cout<<" "<<str[i];
    cout<<endl;
    

    Oder die Funktion c_str()?

    Edit:
    http://www.cppreference.com/cppstring.html



  • Hi

    Ich denke schon. Glaube ich zuminest. Aber trotzdem hat mir dein Posting geholfen, da ich vergessen habe, dass man Strings auch indizieren kann. Also der ganze Code sieht im Moment so aus

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    char myput(int &pos, const string &str);
    
    int main(int argc, char* argv[])
    {
        vector<string> strings;
        string text;
        int i = 0;
        const static int j = text.size();
        cout << "Bitte einen String eingeben: ";
        cin >> text; cout << endl;
        string text2 = text;
        for(;i<j; i++)
        {
            strings.push_back(text);
            text = text.erase(text.size() -1);
            cout << strings[i] << endl;
        }
        i = text2.size();
        for(;i<j; i++)
        {
            char ch = myput(i,text2);
            strings.push_back(text);
            text = text.insert(text.size()-i,ch);
            cout << strings[i] << endl;
        }
    
        return 0;
    }
    
    char myput(int pos, string str)
    {
        vector<char>ch;
        for(int i; i<str.size(); i++)
        {
            ch.push_back(str[i]);
        }
        char c = ch[pos];
        return c;
    }
    

    Ich experimentiere dabei grade ein wenig mit Vectoren und Strings. Der g++ spuckt mir dabei aber folgendes aus, was ich nicht so ganz entziffern kann bzw. nicht weis, wie ich es ändere.

    g++ -Wall -w -O3 ./vector1.cpp -o ./vector1
    vector1.cpp: In function int main(int, char**)': vector1.cpp:28: error: invalid conversion from \char' to `const char*'
    vector1.cpp:28: error: initializing argument 2 of `std::basic_string<_CharT,
    _Traits, _Alloc>& std::basic_string<_CharT, _Traits,
    _Alloc>::insert(typename _Alloc::size_type, const _CharT*) [with _CharT =
    char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'

    Cu
    André



  • *push*

    Ich bin leider immer noch nicht weiter gekommen 😞

    Cu
    André



  • hi

    insert ist überladen, ich glaube, er verlangt bei char eine referenz
    text = text.insert(text.size()-i, & ch);



  • elise schrieb:

    hi

    insert ist überladen, ich glaube, er verlangt bei char eine referenz
    text = text.insert(text.size()-i, & ch);

    Ok, das geht soweit doch nörgelt er jetzt beim linken

    g++ -Wall -w -O3 ./vector2.cpp -o ./vector2
    /tmp/ccUbz1CC.o(.text+0x1c8): In function main': : undefined reference tomyput(int&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    collect2: ld returned 1 exit status

    Cu
    André



  • Hi@all

    Das Problem hat sich von selbst gelöst. Im Prototypen von myput() habe ich Referenzen als Parameter übergeben und in der Deklaration hab ich dies nicht getan.

    Cu
    André


Anmelden zum Antworten