Convertir un seul caractère en int

Comment puis-je convertir char a [0] en int b [0] où b est un tableau int alloué dynamicment de manière dynamic

j’ai essayé

char a[] = "4x^0"; int *b; b = new int[10]; char temp = a[0]; int temp2 = temp - 0; b[0] = temp2; 

Je veux 4 mais ca me donne ascii valeur 52

Aussi faire

 a[0] = aoti(temp); 

me donne l’erreur: conversion non valide de ‘char’ à ‘const char *’, argument d’initialisation 1 de ‘int atoi (const char *)’

Tu as besoin de faire:

 int temp2 = temp - '0'; 

au lieu.

La version atoi () ne fonctionne pas car atoi () fonctionne sur des chaînes et non sur des caractères individuels. Donc, cela fonctionnerait:

 char a[] = "4"; b[0] = atoi(a); 

Notez que vous pouvez être tenté de faire: atoi (& temp) mais cela ne fonctionnerait pas, car & temp ne pointe pas vers une chaîne terminée par un zéro.

Vous pouvez remplacer la séquence complète:

 char a[] = "4x^0"; int *b; b = new int[10]; char temp = a[0]; int temp2 = temp - 0; b[0] = temp2; 

avec le plus simple:

 char a[] = "4x^0"; int b = new int[10]; b[0] = a[0] - '0'; 

Pas besoin de déconner avec les variables temporaires. La raison pour laquelle vous devez utiliser '0' au lieu de 0 est que le premier est le caractère “0” qui a la valeur 48 plutôt que la valeur 0.