String anfügen an bestimmter Stelle

Shooter2k

Erfahrenes Mitglied
Hallo liebes Forum,
ich habe ein Problem. Ich würde gerne an einem String der nur aus Zahlen besteht an bestimmter stelle eine weitere Zahl anfügen.

Code:
string code = "215472560524632";

//die Zahl die eingefügt werden soll
int zahl2 = 5;

//An stelle anfügen oder ersetzen
code[4], wobei code[4] auf die Zahl 7 Zeigt, die ich mit der Zahl 5 ersetzen möchte.


// Der String sollte jetzt so aussehen:
string code = "2154->5<-2560524632";
215452560524632

Hat jemand eine Idee, wie ich das in C++ umsetzen kann?

Vielen Dank

gruß
 
Hi,

ich kann dir nur sagen, wie ich das in C machen würde, eventuell hilft dir das aber auch weiter.
Angenommen du willst eine Zahl wie oben geschrieben an den Index 4 setzen.

Möglichkeit 1:
Du erstellst ein neues Array / String und kopierst erst alles bis (n-1) da rein, dann die Zahl und abschließend den Rest ab (n).

Möglichkeit 2:
Mit realloc das Array größer machen, mit memmove alles ab (n) eine Position weiterschieben und in der Lücke dann die Zahl einfügen.

Gruß
BK
 
Hallo,
vielen Dank für die Antworten.
Ich möchte es lieber ersetzen statt hineinkopieren. Kannst du mir ein Codebeispiel dazu geben?

Vielen Dank
 
Ich habe gerade noch mal darüber nachgedacht und würde es doch lieber anfügen, statt zu ersetzen. Über ein Codebeispiel würde ich mich sehr freuen. Vielen Dank schon mal.

gruß
 
Ich weiß nicht genau, obs das hier ist:

C++:
#include <string>
#include <iostream>
#include <stdio.h>

std::string insertNumberInString(std::string numberString, int number, unsigned int position)
{
    std::string newString("");
    for(size_t i = 0; i < numberString.length(); i++)
    {
        if(i==position-1)
            newString += number + 0x30;

        newString += numberString[i];
    }

    return newString;
}

int main(int argc, char **argv)
{
    int zahl2 = 5;
    std::string code("215472560524632");


    std::cout << insertNumberInString(code, zahl2, 5) << std::endl;

    getchar();
}
 
WOW *freu* genau das habe ich gesucht. Funktioniert leider nur bis newString += number + 0x30;. Der Pfeil wird bei der Ausgabe an der richtigen Stelle angezeigt, leider nicht die "number". Weisst du vielleicht woran das liegen könnte? Übergeben wird in der main()

cout << insertNumberInString(hash1_key, 12, 4) << endl;


Meine Ausgabe: 441<673866837773850276551263770
Vielen vielen Dank, dass du dir die Zeit dafür genommen hast.
 
Ah, ok, du übergibst jetzt zweistellige Werte. Darauf ist das Programm nicht vorbereitet. Dann muss man das etwas anders machen:

C++:
#include <string>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

std::string insertNumberInString(std::string numberString, int number, unsigned int position)
{
    std::string newString("");
    char szNumber[10];
    itoa(number, szNumber, 10);
    for(size_t i = 0; i < numberString.length(); i++)
    {
        if(i==position-1)
            newString += szNumber;

        newString += numberString[i];
    }

    return newString;
}

int main(int argc, char **argv)
{
    int zahl2 = 12;
    std::string code("215472560524632");


    std::cout << insertNumberInString(code, zahl2, 5) << std::endl;

    getchar();
}
 
Vielen Dank. Wünschte ich wäre selber drauf gekommen. Aber dazu fehlt mir leider noch die Erfahrung. Wünsche dir noch einen schönen Abend ich habe ihn jetzt jedenfalls ;-)

gruß
 
Ich muss zugeben, das was ich da hin gecodet habe, ist übelstes gehacke... C und C++-Code mischen ist ganz pfui. Es funktioniert zwar, schön ist es aber nicht. Ich muss auch noch viel über C++ lernen, daher gleite ich oft nach C ab ;)
 
Zurück