Anfängerfrage zu String^

Telefisch

Mitglied
Hallo Ihr Wissenden ...
ich stehe als blutiger C++ Anfänger vor einem Problem:
Mir fehlen die hübschen Left, Right und Mid-Funktionen aus VB.
Da ich bis jetzt nix gefunden hab, dachte ich, ich bau sie selbst.
Dieses StringBuilder-Objekt kommt mir dafür ziemlich passend vor.

Hier meine Funktion:
Code:
// Funktionen für diverse String-Operationen
#include "stdafx.h"

using namespace System;
using namespace System::Text;



// gibt den linken Teil eines Strings zurück
System::String^ strLeft (System::String^ mString, int mPointer)
{
	array<Char>^ dest = gcnew array<Char>(mPointer);
	StringBuilder^ src = gcnew StringBuilder(mString);

	src->CopyTo(0,dest,0,mPointer);
	Console::WriteLine(dest);
	
	return dest->ToString();
}
Dumm ist nur, dass return folgendes liefert:
System.Char[]
Also wollte ich
return dest->ToString(0,mPointer)
versuchen aber da meckert das System, dass hier keine zwei Parameter möglich sind.

Ich verzweifle hier noch an den Strings.
Gibt es denn nichts in C++ was sich ähnlich leicht als Variable verwenden lässt wie in VB?

Bin für jede Hilfe dankbar...
Gruss Carsten
 
Hallo,
nimm doch die Substriing-Methode der String-Klasse:
C++:
String ^str = gcnew String("Irgendein blöder Text");
int nCount, nStart;

// Left
nCount = 9;
String ^strLeft = str->Substring(0, nCount);
Console::WriteLine(strLeft);

// Right
nCount = 4;
String ^strRight = str->Substring(str->Length - nCount, nCount);
Console::WriteLine(strRight);

// Mid
nCount = 6;
nStart = 10;
String ^strMid = str->Substring(nStart, nCount);
Console::WriteLine(strMid);
Gruß
MCoder
 
Allerbesten Dank...
ist zu Anfang echt verwirrend, mit den Unmengen an Klassen, die man verwenden kann.
Ich find irgendwie erst langsam durch die MSN :rolleyes:
 
...nächste Frage:

wie kann ich mit Regex einen \ (Backslash) und " ersetzen?
Der \ wird offensichtlich als Escape-Zeichen erkannt.
Folgende Zeilen habe ich in VBA:

Daten = Replace(Daten, "ZEICHNUNG," & Chr(34), "")
Daten = Replace(Daten, "\", "")

Kann ich das einigermaßen einfach mit der Replace-Funktion von C++ bewerkstelligen?

Gruss Carsten
 
Der Backslash hat in C/C++ eine besondere Bedeutung: Er dient zur Kennzeichnung von Steuerzeichen. Soll der Backslash selbst dargestellt werden, muss du ihn zweimal hintereinander schreiben.
C++:
String ^str = gcnew String("C:\\TEMP");
String ^strReplace = str->Replace("\\", "/");
Gruß
MCoder
 
Ok, das hat ja schonmal ganz lecker geklappt.

Wie muss ich denn mit Sonderzeichen wie Komma oder Anführungsstrichen umgehen?
Ich muss Beispielsweise die Zeichenkette "," extrahieren bzw. auch Replacen.
Kann ich da ähnlich wie in VB mit sowas wie chr(34) oder so arbeiten?
 
Das Komma kannst du direkt als Zeichen verwenden. Wenn du ein Anführungszeichen innerhalb eines Strings haben willst, musst du einen Backslash davorschreiben. Eine "Chr" - Funktion gibt es nicht. Die Zuweisungen im folgenden Beispiel haben das gleiche Ergebnis:
C++:
char c;
c = 50;
c = '2';
Für solche Basics solltest du dir vielleicht mal ein C/C++ - Buch o.ä. greifen.

Gruß
MCoder
 
Jo, mit den Büchern gebe ich Dir prinzipiell Recht.
Nur dumm, dass man da drin keine Suchmaschine hat :rolleyes:
Ganz Ehrlich:
Ich hab mittlerweile bestimmt 6 oder 7 C++ Bücher und kann schon Hello World in allen Sprachen aber wenn man wirklich mal Probleme Lösen muss, findet man eh nix.

Nur als Beispiel:
Visual C++.NET Entpackt.

Versuch da mal was über das System-Objekt zu finden....
Das fürht bei mir dann irgendwann dazu diese sauteuren Schmöcker zum Kamin anzünden zu verwenden und die Sprache im realen Leben zu lernen.

Aber Du hast vollkommen Recht, dies waren basics die ich sicher in diesem Buch hätte finden können *schämfaul*

Danke für Deinen Tipp, ich lern mal weiter *grins*
 
Zurück