PDA

Prikaži potpunu verziju : Kako string to int u Microsoft Visual-u C++ 2003


Arakis
17.5.2006, 14:08
#include "stdafx.h"
#include <iostream>

int main()
{
int a = 0;
std::string b = "12";

return 0;
}

Posto a=b naravno neradi, kako da b konvertujem u int?
Naravno gledao sam u helpu ima funkcija atoi i pise za nju atoi - Convert string to int, ali kada probam a=atoi( b ) i kada kompajliram dobijem poruku Projects\dsf\dsf.cpp(13): error C2664: 'atoi' : cannot convert parameter 1 from 'std::string' to 'const char *'. Tu pise da atoi funkcija trazi char a ne string a u helpu pise da trazi string!Ovo je malo zbunjujuce...

seymourc64
17.5.2006, 14:31
Pre svega...Atoi je funkcija iz standardne biblioteke c jezika i kao takva radi sa obicnim ascii stringovima(tj. nizom karaktera gde je poslednji znak 0).String je klasa,pa samim atoi ne moze da direktno prebaci vrednost iz promenljive b(koja kod tebe predstavlja objekat,odnosno instanciranu klasu string) u integer.Klasa string poseduje metodu c_str() koja vraca obican c-ovski ascii string.Evo ti resenje za tvoj primer :

#include "stdafx.h"
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
int a;
std::string b;

b = "123";
a = atoi(b.c_str());
printf("%ld\n",a);
system("pause");
return 0;
}

Andross
17.5.2006, 14:36
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
char buffer[80];
cout << "Enter a number: ";
cin >> buffer;
int number;
number = atoi(buffer);
cout << "Here's the number: " << number << endl;
system("pause");
return 0;
}

Ovo bi trebalo da radi.

Arakis
17.5.2006, 14:43
Hvala obojici!
U Delphi-ju je bilo prostije a=StrToInt(b)

seymourc64
17.5.2006, 14:52
Stvar je u tome da je string u Pascalu(a samim tim i Delphiju) obican tip podataka,a u c++ string je klasa.Moj savet ti je da detaljnije naucis teoriju i sve ce ti biti jasnije.Inace u Androssovom primeru se radi sa obicnim ascii stringom.Moja preporuka je da ipak koristis string klasu.

priest (of_the_moon)
18.5.2006, 2:12
Moja preporuka je da ipak koristis string klasu.
Ja bih dodao ovde:
... dok ne naučiš dobro da barataš sa (char za ascii, short za unicode) nizovima i funkcijama za njihovu manipulaciju.

M.Silenus
18.5.2006, 13:39
...u c++ string je klasa....

Čekaj malo... String u C/C++ je niz podataka tipa char ( iliti, string je zapravo podatak tipa char* ). Sa druge strane , u okviru STL ( Standard Template Library ) postoji klasa string, za lakši rad sa stringovima ( niskama, rečima , whatever ) . A STL nije C++ !

Je li ovo dobro, ili sam ja nešto pobrkao?:confused:

seymourc64
18.5.2006, 18:34
M Silenius
U pravu si i nisi pobrkao.STL nije deo C++ jezika,vec samo postoji implementacija i za c++.Slucajno napravih previd...
Inace std::string je specijalizacija std::basic_stringa.Cini mi se da je covek ipak hteo pomoc oko std::stringa,jer ga interesuje OO koncept.Koriscenje STL,u tom slucaju,se namece kao imperativ.

M.Silenus
20.5.2006, 15:03
A , dobro je ...

Hvala!