Mid Function in c++??

hallo,
ich hab hier jetzt angefangen was zu proggen und brüuchte die mid function aus vb in c++ aber weis nicht ob die hier auch gibt.. bzw wenn nein wie kann ich die selber schreben bzw was passiert da eigentlich und noch eine frage wie kann ich einen buschstaben in eine zahl umwandeln (ASCII) ??

thx im vorraus
mfg Andy18
 
Buchstaben kannst du mit der Funktion atoi in Integerzahlen umwandeln, oder
atof für float.

wegen der mid funktion kannst du ja mal in der msdn nachschaun, falls du sie hast
 
endlich mal wieder ne frage, wo ich auch was dazu sagen kann :)

also zur 1. frage:

ich hab diese mid in der msdn nur für vb gefunden und nicht für c++. zum glück, den sowas lässt sich in c++ viel eleganter mit strings lösen.

Code:
        string zeichenkette = "Hallo";
	string substring;

	substring = zeichenkette.substr(1, 3);

	cout << substring << endl;

also einfach die methode substr(startPos, endPos); nutzen.



2. frage:

ich würde bei der umwandlug des buchstaben keine funktion benutzen. sowas kann man viel leichter und schneller mit einem cast erreichen.

Code:
	char buchstabe = 'A';

	cout << buchstabe << endl;
	cout << (int)buchstabe<< endl;

ausgabe:
A
65

also einfach ein "(int)" vor den char schreiben und schon wird einem der ascii-wert des zeichens geliefert.

mfg,
pacman.
 
naja, man kann auch wenn man mit den zahl weiter arbeiten will immer wieder neu casten. lieber 10 mal casten, als einmal eine langsame funktion benutzen.
und wenn ich ihn richtig verstanden haben, will der nicht das zeichen in eine zahl umwandeln, sondern er will den ascii wert des zeichens haben. sowas leistet atoi nicht !
 
@pacman:

es wäre vielleicht nützlich, wenn du die bibo angibst, aus der du die klasse string beziehst. denn die gibts imo nicht in ANSI C++.
 
also die string klasse sollte man schon kennen, wenn man c++ programmiert. für alle, die die zugehörige headerdatei nicht kennen, es ist die <string> (wär hätte das nur gedacht :D )

mfg,
pacman.
 
hallo.. das ist genau was ich wollte... aber jetzt hab ihc noch ne frage.. wie wandel ich die zahl danach wieder in einen buchstaben um??
Code:
	char buchstabe = 'A';

	cout << buchstabe << endl;
	cout << (int)buchstabe<< endl;

und noch was wie kann die die commondialogs in c++ verwenden?? also die kenne ich auch noch aus vb :D

thx im vorraus....

mfg andy18
 
Hallo,
äh nur so am Rande erwähnt,das mit INT und CHAR mag noch funktionieren,
wenn du unter Windows programmierst solltest du aber folgendes vermeiden
(CWnd *) ABC,oder so,du solltest dann lieber die entsprechende Funktion/Makro für benützen.

mfg
Peter
 
@andy18:

nur mal so zum verständnis:
in wirklichkeit wird da nichts "umgewandelt". die zeichen werden alle als zahlen (als deren ASCII-werte) gespeichert. dein speicher wird also niemals ein A oder ein B sehen, sondern immer nur den ASCII wert von dem zeichen. also die zahl 65 und ein großes "A" sind im speicher genau gleich, es gibt keinen unterschied. aber weil dein compliler, bzw. die .exe ganz schlau ist, weiß er, dass es die 65 einmal als 65 und ein anderes mal vielleicht als "A" zu interpretieren hat, wieder ein anderes mal kann es auch ein teil von einem double sein, usw.
mit dem (int) bzw. (char) sagst du dem compiler nur, um welche sorte von daten es sich handelt. schreibst du ein (int) vor eine char-variable, wird der zahlenwert nicht nach der ASCII-Tabelle umgewandelt, sondern bleibt so wie er ist. wenn du es wieder weglässt wird es wieder als zeichen interpretiert. da brauchst du also kein (char), weil es die ganze zeit über ein char ist und auch immer bleiben wird; es wird nur an der stelle mit dem (int) nicht als zeichen interpretiert.

ich hoffe das war verständlich :)

mfg,
pacman
 
danke leute hatte mir schon sowas gedacht also das es char ist weil in vb es chr heist ;)
und zum umwandeln.. naja natürlich hast du recht.. ist ja auch logishc.. hab es auch falsch formuliert geb ich schon zu.. ;)

müsste jetzt nur noch das mit der api angucken... ;)
//Edit:
also bei mir klappt das mit den (char) und (int) net.. der sagt immer der wert kan nicht in char bzw int convertiert werden.. :(

ach ich nutze die visual stidio .net 2003 umgebung..

und ich hab da ja 2 arten von string aso einfach string und CString der CString hat eine Mid funktion!! und bei dem heist die lenge des strings nicht einfahc lenght sondern getlength ... bei dem string datentyp hab ich die substr funktion gefunden.. aber wie schon gesagt der meckert mir wenn ich int und char dafor schreibe....
mfg
andy18
 
hier liegt ein kleines missverständnis vor:

du kannst (char) bzw. (int) nicht auf einen ganzen string anwenden, sondern immer nur auf einzelne zeichen.
angenommen du hast einen string mit dem inhalt "hallo". dann kannst du zwar die einzelnen ascii-wert der zeichen abfragen, aber nicht das ganze wort in eine zahl umwandeln. du musst jedes zeichen einzeln ansprechen und es konvertiern.

bsp:
Code:
   string wort = "hallo";

   cout << (int)wort; // das wird nicht funktionieren

   cout << (int)wort[0] << (int)wort[1] << (int)wort[2] << (int)wort[3] << (int)wort[4]; // so funktionierts

falls es kein allzugroßes prog ist, kannst du mir auch gerne mal den quellcode schicken. ich kuck dann mal drüber und kann dir evt. noch ein paar tipps mehr geben oder dir deine gewünschte routine schreiben (ich hab atm seeeeeehr viel zeit ;) )

mfg,
pacman
 
hi,
also danke für deine antwort aber jetzt wo du es sagst klingt es ja auch logisch :D hehe
aufjedenfall werde ich es heute später testen da ich jetzt weg muss.. ich schreib hier dan obs geklappt hat ;)
und mein prog wird eigentlich was grösseres hier alles zu posten were net so toll glaub ich :) aber fals was kann ihc dich ja nochmal ansprechen ;)

mfg andy18
 
Zurück
Oben