Char to Int

finnex

Erfahrenes Mitglied
Hallo,
ich würde gerne einen Char-Wert in einen Int-Wert umwandeln. Doch leider weis ich nicht wie das geht, kann jemand mir helfen? Bei :google: habe ich auch schon gesucht doch leider nichts passendes gefunden.
Auserdem habe ich es auch schon mit "atoi()" versucht doch das klappt auch nicht.

Ich programmiere mit Windows Visual C++ fall ihr dies noch wissen wollt.

Danke für eure Antworten.

Mfg finnex
 
Hier ein kleines Bsp:
C:
#include <iostream>
using namespace std;

void main() {

	char argument[20];
	int tmp;
	cin >> argument ;
	tmp = int(argument);      // Datentypumwandlung
	return;
}

Du musst eine Datentypumwandlung durchführen - dies geschieht mit der Zeile mit dem Kommentar - also zuerst den Datentyp angeben und dann in Klammern der Wert einfach dahinter.

Ich hoffe es ist alles richtig ;)

Gruß,
 
Zuletzt bearbeitet:
Hallo,

enthält der Char eine oder mehrere Ziffern, die du umwandeln willst?
Dann ist "atoi()" schon der richtige Weg:
C++:
// einzelnes Zeichen
char c = '1';
int  n = atoi(&c);

// Zeichenkette
char cNum[] = "123";
int  nNum   = atoi(cNum);
Gruß
MCoder
 
Versteh ich jetzt den Unterschied zwischen den beiden Vorschlägen richtig ?

- Beide wandeln char in int um
- atoi() - aber übernimmt nur reine Zahlenwerte:
z.b. char tmp[] = null815; --> liefert atoi(tmp) = 0​
- und mit cast wäre es dann so:
z.b. char tmp[] = null815; --> cast liefert null815​

Gruß,
 
Hallo,
danke für die schnelle Antwort.
Doch leider klappen beide Versuche nicht.

Es kommt immer die Fehlermeldung:

"'int' kann nicht in 'char [20]' konvertiert werden
Es gibt keine Konvertierungen von Arraytypen, obwohl es Konvertierungen von Verweisen oder Zeigern in Arrays gibt"

Aber normalerweise will ich doch Char to Int konvertieren. Ich weis nicht was da los ist.


Noch meinen Quelltext:

Code:
ifstream in("1.txt");
		while(!in.eof())
		{
			char d[20];
			d=in.get();
			int e;
			cin >> d;
			e = int(e); 
			cout << e;
		};

Noch zu dem Programm:
Ich will aus einer Textdatei eine Zahl einlesen die in Char gespeichert wird.
Doch damit ich mit ihr rechnen kann brauch ich sie in Int.

Ich hoffe ihr könnt mein Problem lösen.

Mfg finnex
 
@Thurstan
Die Funktion "atoi" wandelt eine ASCII-Ziffernfolge in ihr numerischen Äquivalent um. Beginnt die Zeichenkette mit einem anderen Zeichen, als einer Ziffer, kommt 0 raus. Soweit passt also dein Beispiel.
Der cast versucht die Datentypen umzuwandeln. Da eine Zeichenkette ein Zeiger ist, wird beim casten auf einen "int" die Adresse des Zeigers dorthin geschrieben.

@finnex
Dafür brauchst du eine Konvertierungsfunktion und "atoi" erfüllt diesen Zweck ganz gut:
C++:
ifstream in("1.txt");

if( in.is_open() )
{
    string str;
    while( getline(in, str) )
    {
        int n = atoi(str.c_str());   
    }
    in.close();
}
Gruß
MCoder
 
Hallo,
ich kann jetz zwar den Code konvertieren, doch wenn ich das Programm ausführen will sagt mir das Programm, dass die int Variable nicht bestimmt ist.

Hier nochmal der code:

Code:
int n;
ifstream in("1.txt");
if( in.is_open() )
{
string str;
while( getline(in, str) )
{
int n = atoi(str.c_str());   
}
in.close();
} 
cout <<n;

Habe ich irgendwas falsch gemacht?

Mfg finnex
 
Hallo,

ist ja auch klar, deine int-Variable ist so nur in der Schleife bekannt. Du solltest diese vorher anlegen.

MFG

Sascha
 
Hi,
@zerix
Ich habe mal die Int Variable ganz am Anfang definiert, doch es kommt immer noch der selbe Fehler.

Also daran kann es nicht liegen.

Mfg finnex
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück