Avatar billede dehdar Nybegynder
06. februar 2008 - 17:28 Der er 8 kommentarer og
1 løsning

Ændringer i string variabler

Hej, hvordan er det man ændrer i strings?

Eksempel:

Jeg har en variabel (string x = "12345"). Hvis jeg nu vil ændre det midterste tal til 9 uden at røre de andre tal, hvordan gør jeg så? Jeg har prøvet at lave en pointer (*(x+2 = 9)), men det virker ikke da en string er et objekt og ikke et char array... æv :(
Avatar billede dehdar Nybegynder
06. februar 2008 - 17:37 #1
ahh jeg har fundet ud af det.

variabelnavn[pladsnr]

:)
Avatar billede dehdar Nybegynder
06. februar 2008 - 17:38 #2
.
Avatar billede arne_v Ekspert
06. februar 2008 - 17:38 #3
Avatar billede dehdar Nybegynder
06. februar 2008 - 22:13 #4
Tak for linket.

Kan man bruge replace funktionen til at ændre på 1 plads?

f.eks.

string x = "1010101"
string y;

Hvad skriver man, hvis man vil kopiere x[0] over til y[0] uden at kopiere hele indholdet ved brug af replace funktionen?
Avatar billede arne_v Ekspert
06. februar 2008 - 22:46 #5
Avatar billede dehdar Nybegynder
06. februar 2008 - 23:04 #6
Hmmm nej, jeg beklager at jeg ikke har udtrykket mig klart nok.

Jeg forsøger at lave en funktion, som tager imod et navn og dernæst validerer navnet. Måden valideringen foregår på er, at jeg tjekker om hver plads i mit string er et bogstav, hvis det er det, så ønsker jeg at sætte indholdet af den plads lig med pladsen i en string, som jeg har erklæret i min header.

Min fremgangsmåde er:

for (int i = 0; (i < (a.length())); i++)
{
    if ((isalpha(a[i])) && (i != 0))
    fornavn[i] = a[i];  // her klipper båndet :(
    else
    if ((isalpha(a[i])) && (i == 0))
          fornavn = toupper(a[i]);
    else
      ...
Avatar billede dehdar Nybegynder
06. februar 2008 - 23:40 #7
jeg er har fundet en imidlertidlig løsning på problemet. Over for-løkken skriver man blot fornavn = a;

Problemet skyldes tilsyneladende, at man ikke kan initialisere pladser i et objekt af string medmindre objektet er initialiseret i forvejen. String er jo et objekt indholdende char arrays (?) og hvis det ikke er initialiseret i forvejen, så er der vel heller ikke nogle pladser at pege på...?

Nåh, men ellers tak arne. Jeg beklager desuden at jeg var for hurtig med at dele points ud til mig selv, eftersom løsningen ikke var optimal :)
Avatar billede arne_v Ekspert
07. februar 2008 - 01:20 #8
Ligesom:

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main()
{
    string s = "bla-bla-bla";
    string s2(s.length(), ' ');
    for(size_t i = 0; i < s.length(); i++)
        if(isalpha(s[i]))
            s2[i] = (i == 0) ? toupper(s[i]) : s[i];
    cout << s2 << endl;
    return 0;
}

?
Avatar billede dehdar Nybegynder
07. februar 2008 - 19:15 #9
ja lige præcis :) tusind tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester