Iemand die weet hoe je een char-array naar een enkele int kunt converteren?
char hello[5];
hello = "12345";
int myNumber = convert_char_to_int(hello);
Printf("My number is: %d", myNumber);
Antwoord 1, autoriteit 100%
Er zijn meerdere manieren om een string om te zetten naar een int.
Oplossing 1: Legacy C-functionaliteit gebruiken
int main()
{
//char hello[5];
//hello = "12345"; --->This wont compile
char hello[] = "12345";
Printf("My number is: %d", atoi(hello));
return 0;
}
Oplossing 2: lexical_cast
gebruiken (meest geschikt en eenvoudigst)
int x = boost::lexical_cast<int>("12345");
Oplossing 3: C++ Streams
gebruiken
std::string hello("123");
std::stringstream str(hello);
int x;
str >> x;
if (!str)
{
// The conversion failed.
}
Antwoord 2, autoriteit 20%
Als u C++11
gebruikt, moet u waarschijnlijk stoi
gebruiken omdat het onderscheid kan maken tussen een fout en het ontleden van "0"
.
try {
int number = std::stoi("1234abc");
} catch (std::exception const &e) {
// This could not be parsed into a number so an exception is thrown.
// atoi() would return 0, which is less helpful if it could be a valid value.
}
Opgemerkt moet worden dat “1234abc” impliciet geconverteerd isvan een char[]
naar een std:string
voordat het wordt doorgegeven aan stoi()
.
Antwoord 3, autoriteit 5%
Gebruik sscanf
/* sscanf example */
#include <stdio.h>
int main ()
{
char sentence []="Rudolph is 12 years old";
char str [20];
int i;
sscanf (sentence,"%s %*s %d",str,&i);
printf ("%s -> %d\n",str,i);
return 0;
}
Antwoord 4, autoriteit 5%
Ik gebruik :
int convertToInt(char a[1000]){
int i = 0;
int num = 0;
while (a[i] != 0)
{
num = (a[i] - '0') + (num * 10);
i++;
}
return num;;
}
Antwoord 5, autoriteit 2%
Ik laat dit hier gewoon achter voor mensen die geïnteresseerd zijn in een implementatie zonder afhankelijkheden.
inline int
stringLength (char *String)
{
int Count = 0;
while (*String ++) ++ Count;
return Count;
}
inline int
stringToInt (char *String)
{
int Integer = 0;
int Length = stringLength(String);
for (int Caret = Length - 1, Digit = 1; Caret >= 0; -- Caret, Digit *= 10)
{
if (String[Caret] == '-') return Integer * -1;
Integer += (String[Caret] - '0') * Digit;
}
return Integer;
}
Werkt met negatieve waarden, maar kan niet overweg met niet-numerieke tekens ertussen (moet wel gemakkelijk kunnen worden toegevoegd). Alleen gehele getallen.
Antwoord 6, autoriteit 2%
Bijvoorbeeld, “mcc” is een char-array en “mcc_int” is het gehele getal dat u wilt krijgen.
char mcc[] = "1234";
int mcc_int;
sscanf(mcc, "%d", &mcc_int);
Antwoord 7
Met cstring en cmath:
int charsToInt (char* chars) {
int res{ 0 };
int len = strlen(chars);
bool sig = *chars == '-';
if (sig) {
chars++;
len--;
}
for (int i{ 0 }; i < len; i++) {
int dig = *(chars + i) - '0';
res += dig * (pow(10, len - i - 1));
}
res *= sig ? -1 : 1;
return res;
}
Antwoord 8
Om een lang verhaal kort te maken, je moet atoi()
ed:
Als je hierin geïnteresseerd bent op de juiste manier:
char szNos[] = "12345";
char *pNext;
long output;
output = strtol (szNos, &pNext, 10); // input, ptr to next char in szNos (null here), base
Antwoord 9
Conversie van Ascii-tekenreeks naar geheel getal wordt gedaan door de functie atoi()
.