Integer und Text kombinieren



  • Hallo,

    ich möchte im Endeffekt einen String erhalten, der sich aus 2 Variablen zusammensetzt, zum eines wäre das ein Integer, zum anderen ein Text.

    Der Text bleibt konstant, der Integer wird in einer Schleife hochgezählt.

    Wie kann ich die beiden zu einer Variablen verbinden?



  • In C oder C++?

    MfG SideWinder



  • Sry, C++



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • 1. Den int in einen String umwandeln (leider jedesmal nötig), siehe dazu in der C++-FAQ.

    2. Die zwei Strings aneinander hängen.

    std::string str = " Birnen";
    for(int i = 0; i < 5; ++i)
    {
        std::string i_str = MyIntToStr(i);
        cout << i_str << str << endl;
    }
    

    MyIntToStr() befüllst du mit einem der Wege aus der FAQ.

    MfG SideWinder



  • In C++ nimmst du wohl einen (o)stringstream

    den kannst du per stream-operator befüllen und per .str() bekommst du dann den fertigen String.

    /EDIT was spricht dagegen den int direkt per streamoperator umzuwandeln? Ich hab in der FAQ dazu nichts gefunden:



  • Wenn du bereits Boost einsetzt oder bald einsetzen möchtest ist auch boost::lexical_cast eine Idee.

    MfG SideWinder



  • xbug schrieb:

    ich möchte im Endeffekt einen String erhalten, der sich aus 2 Variablen zusammensetzt, zum eines wäre das ein Integer, zum anderen ein Text.

    Der Text bleibt konstant, der Integer wird in einer Schleife hochgezählt.

    Wie kann ich die beiden zu einer Variablen verbinden?

    Etwa so:

    #include <iostream>
    #include <string>
    #include <sstream>
    
    struct CountingString
    {
        explicit CountingString( const std::string& txt )
            : m_txt( txt )
            , m_idx( 0 )
        {}
        CountingString& operator++()
        {
            ++m_idx;
            return *this;
        }
        std::string str() const
        {
            std::ostringstream buf;
            buf << m_txt << " " << m_idx;
            return buf.str();
        }
    
    private:
        std::string m_txt;
        int m_idx;
    };
    
    int main()
    {
        using namespace std;
        CountingString is("Hallo");
        for( int i = 0; i < 10; ++i, ++is )
            cout << is.str() << endl;
        return 0;
    }
    

    Gruß
    Werner



  • Danke Werner 🙂


Log in to reply