Permalänk
Medlem

atoi (c++)

jag vill göra om en string till en int med kommandot atoi, jag kollade msdn hjälpen och den sa "int atoi( const char *string );" så jag skrev så här "tal = atoi(tal2);" . När jag kompilerar så säger den cannot convert men det står juh i hjälpen att det är det atoi gör. Vad är fel?

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Hedersmedlem

Är du säker på att tal2 är en char*? Har du en string får du ta tal2.c_str() istället.

Visa signatur

The variable 'brain' is declared but never used

Permalänk
Hedersmedlem

Eller så gör du det "the c++ way" med t.ex. stringstream.

Permalänk
Medlem

hmm

ok, vad är en stringstream?

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Hedersmedlem
Permalänk

#include <iostream.h> #include <stdlib.h> void main() { char * a = "56"; int b = atoi(a); cout << endl << b << endl; }

funkar

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

bah, jag körde på dammes medod men tack för all hjälp

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue

Permalänk
Medlem

char * a = "56";

Inte alls bra...

char a[2] = "56";

Är korrekt.... Annars tilldelar man minne som inte är allokerat.

Visa signatur

- BeatBox

Permalänk

det är ju statiskt tilldelat. Så det är visst allokerat

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Avstängd

Okej.

char *str1 är (nästan) precis samma sak som char str[]

char *str = "blablabla" är samma sak som

char str[]= {'b','l','a',b','l','a',b','l','a'};

char str[2] = "ab" kraschar eller generar en varning vid kompilation då du inte specifierat plats för nullterminatorn i strägen

['a'] ['b] ['\0'] = 3st sizeof(char) inte 2st

Visa signatur

The artist formerly known to be quite a cocky bastard.

Permalänk
Medlem

char *str = "blablabla" är samma sak som

char str[]= {'b','l','a',b','l','a',b','l','a'};

char* str <-- 'blablabla\0'
char str[] <-- 'blablabla' alltså inget nulltecken..

char* p = "text";
är inget fel däremot är
char str[4] = "text";
fel men det tror jag kompilatorn klagar på när du kompilerar..

Visa signatur

"Anyone who puts a small gloss on a fundamental technology, calls it proprietary, and then tries to keep others from building on it, is a thief."
-Tim O'Reilly "http://iiice.net/~ice/stuff/secret_msg.wav" - who?

Permalänk
Medlem

Ok.... en tankevurpa bara....

Glömmde att "sträng" är en const och på så sätt allokerad.

Det jag tänkte på va :

char x[2] = {'5','6'} och inte char x[2] = "56"
char x[] = "56" funkar.

Visa signatur

- BeatBox