Avatar billede philox Nybegynder
28. juni 2003 - 07:48 Der er 11 kommentarer og
1 løsning

CString og "mellemrum"

Hej,
jeg sidder og bikser med noget MFC/CString.
Jeg ønsker at bruge CString.Insert() til at emulere en slags tabulator. Hvis jeg bruger "mellemrum" lader det til at CString autotrimmer/læser dem som delimiter. Hvordan løser jeg snedigst det problem?

<kode>
CString code;
CString text;

code += "__________";
//code += "          "; CString autotrimmer?
code.Insert(10, text);
code.TrimRight("_");
Avatar billede arne_v Ekspert
28. juni 2003 - 08:59 #1
Jeg er ikke sikker på at jeg forstår problemet.

        CString code = "12345678901234567890";
        CString text = "  ";
        code += "__________";
        code += "          ";
        code.Insert(10, text);
        code.TrimRight("_");

giver:

"1234567890  1234567890__________          "

hvilket ser korrekt ud for mig.
Avatar billede philox Nybegynder
28. juni 2003 - 21:37 #2
Problemet opstår når stregen er mindre end det angivne index.
Jeg håbede, man kunne "udfylde" sin streng med "mellemrum". Jeg har illustreret problemet i den følgende kode. Hvis det virkede, som jeg forventede, skulle "her" stå ens, men det gør de ikke. (Har det noget med størrelse på bogstaverne at gøre?)
Hvis konkatineringen bliver gjort med "____" istedet virker det.

<kode>   
CString s1 = "12345";
CString s2 = "her";
s1 += "          ";
s1.Insert(10, s2);

CString s3 = "123456";
CString s4 = "her";
s3 += "          ";
s3.Insert(10, s4);
   
MessageBox(s1 + "\n" + s3);
Avatar billede arne_v Ekspert
28. juni 2003 - 21:43 #3
Nu tror jeg kan se det.

        CString code;
        CString text;
        code = "12345";
        text = "X";
        code.Insert(10, text);
        code.TrimRight(" ");
        cout << "#" << (const char *)code << "#" << endl;
        code = "12345";
        text = "X";
        code += "__________";
        code.Insert(10, text);
        code.TrimRight("_");
        cout << "#" << (const char *)code << "#" << endl;

giver:

#12345X#
#12345_____X#
Avatar billede arne_v Ekspert
28. juni 2003 - 21:45 #4
Vrøvl.

        CString code;
        CString text;
        code = "12345";
        text = "X";
        code += "          ";
        code.Insert(10, text);
        code.TrimRight(" ");
        cout << "#" << (const char *)code << "#" << endl;
        code = "12345";
        text = "X";
        code += "__________";
        code.Insert(10, text);
        code.TrimRight("_");
        cout << "#" << (const char *)code << "#" << endl;

giver:

#12345    X#
#12345_____X#

og det er korrekt.
Avatar billede arne_v Ekspert
28. juni 2003 - 21:47 #5
CString s3 = "123456";
        CString s4 = "her";
        s3 += "          ";
        s3.Insert(10, s4);
        cout << "#" << (const char *)s3 << "#" << endl;

giver:

#123456    her      #

hvilket også ser korrekt ud.
Avatar billede arne_v Ekspert
28. juni 2003 - 21:47 #6
Du er vel ikke kommet til at lave tab i.s.f. i den streng du
appender ??
Avatar billede philox Nybegynder
28. juni 2003 - 23:00 #7
I et consol-vindue ser det i hvert fald rigtigt ud, hvilket fortæller at "problemet" er font/bogstav-størrelserner (heldigvis).
Men så har jeg et andet spørgsmål :-)
Hvordan virker \t i forbindelse med CListBox?

//Her virker \t fint
MessageBox(CString("Hej") + "\t" + "Hej igen");

//Hvis man bruger \t i en CListBox får man "|" (tyk sort streg)
CListBox* pListBox
...
code += "hej \t";
code += "hej igen";

pListBox->AddString(code);
Avatar billede arne_v Ekspert
28. juni 2003 - 23:03 #8
Den virker vel slet ikke.

Hvis ikke den der har lavet koden har kodet noget for at
håndtere \t, så vises den jo bare som et ukendt tegn.
Avatar billede philox Nybegynder
29. juni 2003 - 03:15 #9
Tja, det lader det unægtelig til, jeg ville bare ha' troet at MFC understøttede den slags.
Avatar billede arne_v Ekspert
31. juli 2003 - 08:29 #10
svar
Avatar billede arne_v Ekspert
31. juli 2003 - 08:29 #11
Tid at lukke spørgsmålet ?
Avatar billede philox Nybegynder
10. august 2003 - 04:40 #12
Tja, det er det vel
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