Strings wie in VB 6

Philipp9494

Erfahrenes Mitglied
Hallo.

Ich habe jetzt schon mehrmals versucht mich mit den Strings in C++ zu befreunden, was aber nicht wirklich funktioniert hat ^^.
Ich finde sie einfach kompliziert - komplizierter als die in VB 6

Kennt einer eine DLL/Lib/etc., die die Stringfuntkionen/Klassen (z.B. Left, Mid, Right, Split, etc.) direkt beinhalten?

Würde mich sehr freuen!!

MfG
Philipp
 
Ich kenne mich mit VB im Allgemeinen garnicht aus, wo liegt denn da der Unterschied?

Bzw. welche Probleme hast Du damit?
 
Hallo
Eigendlich brauchich nicht die Klasse, sondern die Funktionen.
In VB schaut es z.B. so aus, wenn man die ersten 5 zeichen haben will.
Visual Basic:
e5z = left(mystring, 5)

Du kannst auch mal hier nachschauen.

MfG
Philipp
 
Naja, da könntest Du Dir eigene funktionalitäten schaffen, die so funktionieren.

Dein Beispiel kannst Du beispielsweise so realisieren:

Code:
string test = "Hallo Strings"; 
for(int i=0;i<5;i++)                  
{
	cout << test[i];
}

Dieser kleiner Code gibt die ersten 5 Zeichen der Strings test aus. Ich denke man kann so jede VB Funktionalität herstellen, falls gewünscht.

Ich nutze hier den namespace std, damit ich das läßtige std:: nicht immer schreiben muss :D
 
Ahh nein, SO nicht!

substr ist der korrekte Weg!
C++:
template<typename char_type>
std::basic_string<char_type> left(std::basic_string<char_type> const& data, const std::basic_string<char_type>::size_type length)
{ return data.substr(0, length); }

template<typename char_type>
std::basic_string<char_type> mid(std::basic_string<char_type> const& data, const std::basic_string<char_type>::size_type left, const std::basic_string<char_type>::size_type right)
{ return data.substr(left, right - left); }

template<typename char_type>
std::basic_string<char_type> right(std::basic_string<char_type> const& data, const std::basic_string<char_type>::size_type length)
{ return data.substr(data.length() - length); }
so und fertig ... Also das mitm Template ist jetzt vllt. nicht so was für dich, d.h. nochmal einfach:
C++:
data.substr(0, length); // left
data.substr(left, right - left); // mid
data.substr(data.length() - length); // right
;)
 
Magst Du mir erklären, warum mein Weg schlecht ist? Er funktioniert tadellos.
 
Na aus dem ganz einfachen Grund. "Warum muss man das Rad immer neu erfinden?" :D Und weil eine Schleife da nicht das beste ist ...
C++:
const char* string_part = &data.c_str()[5];
wäre da schon ausreichend ...
 
Stimmt schon, das Rad muss man nicht immer neu erfinden, aber dennoch funktioniert es so ebenfalls.
 
Zurück