Forum: PC-Programmierung [C++] System::String^ in char array umwandeln


von Patrick B. (p51d)


Lesenswert?

hallo miteinander

Infolge eines kleinen RTC-Projektes bin ich auf folgendes Problem 
gestossen:
Um das Jahr vom PC aus setzen zu können (wird in einer ComboBox 
eingegeben) muss ich die Zahl 2009 irgendwie in 20 und 09 zerlegen 
können, damit ich diese in einen int umwandeln kann(ist kein Problem, 
dies funktioniert) um später dem MCU zu senden, welcher alles via I2C 
der RTC übermittelt.

split.string (oder so ähnlich) funktioniert nur mit einem Trennzeichen. 
von Borland weiss ich, dass es so eine Funktion gibt, mit der man 
SubStrings herauslesen kann(man gibt Anfangsposition und Schlussposition 
an) und wenn mich nicht alles täusch sieht das etwa so aus:
1
String Jahr;
2
String Jahr_msb;
3
String Jahr_lsb;
4
Jahr_msb = Jahr.SubString(1,2);
5
Jahr_lsb = Jahr.SubString(3,4);

Jetzt ist meine Frage, gibts das auch (oder etwas dass das gleiche 
Bewirkt) bei Visual C++ Express 2008?

Weil so etwas wäre in diesem Zug schon recht nützlich, da ich in einem 
späteren Schritt die RTC gerne mit dem PC Synchronisieren möchte (da 
müsste ich auch irgendwie an die einzelnen Werte kommen).

Danke im foraus für die Hilfe
MFG
P51D


p.s.: meine Suche hat bisher volgender Link ergeben: 
http://support.microsoft.com/?id=311259
nur ist dies nicht ganz das, was ich möchte...

von Sven P. (Gast)


Lesenswert?

System::String^ ist vieles, aber ganz sicher kein C++.

In C++ gibt es den Standard-Stringcontainer der STL aus <string>. Der 
besitzt eine Methode c_str(), die einen Zeiger auf den internen 
Zeichenvektor zurückgiebt.
Der Stringcontainer besitzt auch eine substr()-Methode.

Zerlegen lässt sich das selbst in C recht simpel:
- mit sscanf() und Feldbreitenangabe
- mit einem statischen Zwischenspeicher

von Mark B. (markbrandis)


Lesenswert?

So vielleicht?

von Mark B. (markbrandis)


Lesenswert?

Hm, irgendwie klappt es gerade nicht eine .cpp Datei anzuhängen. Dann 
eben so:

1
#include <iostream>
2
#include <string>
3
4
using std::string;
5
using std::cout;
6
using std::endl;
7
8
int main()
9
{
10
  string jahr = "2009"; // das ist die Ausgangsbasis, nehm ich mal an
11
  string a = jahr.substr(0,2);
12
  string b = jahr.substr(2,2);
13
14
  cout << "Jahr: " << jahr << endl;
15
  cout << "Die ersten beiden Ziffern: " << a << endl;
16
  cout << "Die letzten beiden Ziffern: " << b << endl;
17
  
18
  return 0;
19
}

von Patrick B. (p51d)


Lesenswert?

danke, funktioniert.

p.s.: hab eben gerade die selbe Methode ausprobiert (MSDN sei dank)
aber Danke für die Hilfe...

von Arc N. (arc)


Lesenswert?

Patrick B. schrieb:
> hallo miteinander
>
> Infolge eines kleinen RTC-Projektes bin ich auf folgendes Problem
> gestossen:
> Um das Jahr vom PC aus setzen zu können (wird in einer ComboBox
> eingegeben) muss ich die Zahl 2009 irgendwie in 20 und 09 zerlegen
> können, damit ich diese in einen int umwandeln kann(ist kein Problem,
> dies funktioniert) um später dem MCU zu senden, welcher alles via I2C
> der RTC übermittelt.
>
> split.string (oder so ähnlich) funktioniert nur mit einem Trennzeichen.
> von Borland weiss ich, dass es so eine Funktion gibt, mit der man
> SubStrings herauslesen kann(man gibt Anfangsposition und Schlussposition
> an) und wenn mich nicht alles täusch sieht das etwa so aus:
>
1
> String Jahr;
2
> String Jahr_msb;
3
> String Jahr_lsb;
4
> Jahr_msb = Jahr.SubString(1,2);
5
> Jahr_lsb = Jahr.SubString(3,4);
6
>

> p.s.: meine Suche hat bisher volgender Link ergeben:
> http://support.microsoft.com/?id=311259
> nur ist dies nicht ganz das, was ich möchte...

F1-Taste defekt und/oder Intellisense abgeschaltet? SCNR
http://msdn.microsoft.com/en-us/library/system.string.substring.aspx

p.s. es gibt auch ein DateTimePicker-Control das diese Daten direkt in 
einem passenderen Format liefert...
http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.aspx

von teN crA (Gast)


Lesenswert?

> F1-Taste defekt und/oder Intellisense abgeschaltet? SCNR
Vielleicht beinhaltet das Projekt mehr als drei Dateien und Intellisense 
baut sich immer noch auf. ;-)

von moin (Gast)


Lesenswert?

>F1-Taste defekt und/oder Intellisense abgeschaltet? SCNR
>http://msdn.microsoft.com/en-us/library/system.str...

War doch schon erledigt, was soll denn dieser Unfug noch? Zudem hat er 
sich zuvor schon bedankt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.