Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CString auf eine bestimmte Lenge auffüllen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.09.2005, 11:02 Uhr
~sascha
Gast


Hallo Leute

Weiss jemand von euch, wie ich ein CString von einer unbestimmten (kleineren) Länge auf eine bestimmte Länge mit '-' auffüllen kann?

Ich suche eine möglichst einfache und ELEGANTE Art.

Danke und gruss
Sascha
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2005, 11:18 Uhr
Tommix



Naja,
1. falsches Forum und
2. was ist schon elegant - aber egal,

C++:
mystr += CString('-', sollLaenge-mystr.GetLength());



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2005, 11:29 Uhr
ao

(Operator)


CString ist MFC, nicht Standard-C++, daher

Einfach und nur mäßig performant, dafür narrensicher, falls der ursprüngliche String mal länger sein sollte als die am Ende geforderte Länge:

C++:
CString s = "Blablubb";
while (s.GetLength () < 100)
{
    s += '-';
}



"Elegant" und performant ...

C++:
CString s = "Blablubb";
s += CString ('-', 100 - s.GetLength ());


... aber was passiert, wenn der String schon von vornherein länger ist als 100 Zeichen? Dann füttert man den Konstruktor in der zweiten Zeile mit einer negativen Zahl - was passiert dann? Vermutlich fliegt einem eine Exception um die Ohren, die man fangen muss, und aus ists mit der Eleganz.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2005, 11:42 Uhr
Tommix




Zitat von ao:
... Vermutlich fliegt einem eine Exception um die Ohren, die man fangen muss...

Nö, da fliegt nix:

C++:
//////////////////////////////////////////////////////////////////////////////
// More sophisticated construction

CString::CString(TCHAR ch, int nLength)
{
    Init();
    if (nLength >= 1)
    {
        AllocBuffer(nLength);
#ifdef _UNICODE
        for (int i = 0; i < nLength; i++)
            m_pchData[i] = ch;
#else
        memset(m_pchData, ch, nLength);
#endif
    }
}


Das funzt schon so.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2005, 11:48 Uhr
~sascha
Gast


Danke für eure Hilfe.

@ ao:
1) Berechtigter Einwand. Aber der String kann nicht lenger sein. Ich überprüfe ihn zuerst und schneide in falls er grösser ist auf die max. zulässige Länge. ;-)

2) Sorry für den falschen Thread-Eintrag

Gruss Sascha
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: