Newsgroup: it.comp.lang.c++
Titolo: Problemi con stl::string

salve, sono alle prime armi con il c++, ho appena finito di leggere "C++
Guida Facile" di Paul Snaith dove non dice nulla delle STD e inoltre
pretende che si crei un array di char per creare una stringa.
Lurkando un pò su questo NG ho letto che esiste il comando std::string ma se
cerco di usarlo mi da vari errori:
-------------------------------------------------------------------
9    `string' undeclared (first use this function)
9     parse error before `('
12  `num' undeclared (first use this function)
12   (Each undeclared identifier is reported only once
12  for each function it appears in.)
12  implicit declaration of function `int gets(...)'
--------------------------------------------------------------------
Uso Dev-Cpp 4 di seguito c'è il codice che ho scritto per provare
std::string e su cui rileva quegli errori. Inoltre ho anche provato a
forzare una stringa come intero, ma credo che non si possa fare col cast
normale, in un post di poco tempo fa avevate risposto alla domanda di come
portare una stringa a intero con il comando "atoi()", ma non ho trovato
documentazione a proposito, mi potreste dire qual'è la sintassi esatta?
Inoltre vorrei sapere se esiste una documentazione alle STL in italiano
(quella in inglese è abbastanza comprensibile ma mi risparmierebbe parecchia
fatica evitare di tradurre).
==============================================
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
using namespace std;   //Da gli stessi errori anche se questo nn c'è
int main()
{
      string num();
      int n;
      cout<<"Inserisci un numero ";
      gets(num);
      n = (int)num;               //Tentativo di cast
      cout<<endl<<n;
      system("PAUSE");
      return 0;
}
================================================

 ha scritto nel messaggio
news:8q0i9.10238$Av4.2...@twister2.libero.it...


 portare una stringa a intero con il comando "atoi()", ma non ho trovato
 atoi vuole un char * non uno string, guarda la documentazione di string
--
Ciao.
Maurizio
P.S.: eliminare _!NO$PAM! per rispodere in privato

 > using namespace std;   //Da gli stessi errori anche se questo nn c'č


================================================
il problema, secondo me, è nell'include, prova, invece di includere
#include <string.h>
a includere
#include <string>
questo perché la classe std::string (che puoi usare senza std::
davanti se e solo se scrivi using namespace std) è dichiarata in
string e non in string.h, nella quale ci sono funzioni c tipo strlen,
strcmp, ecc. (e che lavorano sui char* e non sulle std::string)
-- 
]\/[ad]\/[age (
www.madmagelab.cjb.net
)
"Un Maestro insegue semplicemente la sua visione di Eccellenza in
qualunque cosa sta facendo e lascia agli altri decidere se sta 
lavorando o giocando. A lui sembra sempre di fare entrambe." - Anonimo

 #include <string.h>
Errore commesso da *TUTTI* i novizi. Sarebbe meglio eliminarli dalle 
distribuzioni dei compilatori, almeno ottengono il "File not found"...
No? ;)
-- 
Luc.

 Luc.
Saluti
Rosario Ianuale

 #include <iostream.h>
L'header standard è <iostream>, non <iostream.h>
Max

Innanzi tutto ringrazio tutti delle risposte (ho imparato più cose in un
giorno su questo ng che non in un mese su un libro^^).
Scusate poi il nick da babbeo del primo post ma questo account lo uso
raramente.
Grazie ai vostri suggerimenti ho risolto gran parte dei problemi tranne uno:
----------------------------------------------------------------------------
-----
14 cannot convert `valore' from type `string' to type `char *'
----------------------------------------------------------------------------
------
sul comando: gets(valore);
Se utilizzo cin.getline(valore,10) mi da una sfilza di errori che non
finiscono mai.
Se utilizzo get(valore,10)
---------------------------------------------------------------
14  implicit declaration of function `int get(...)'
---------------------------------------------------------------
Mi sono andato a leggere come mi è stato consigliato la documentazione su
iostream e string (in inglese per accontentare MadMage :P) oltre che la
documentazione di altre librerie, ma anche se è stata una cosa molto utile
non sono riuscito a trovare nulla che facesse al mio caso... ora sono
davvero a corto di idee (ovviamente potrei utilizzare un array di char ma a
me interessa usare il tipo string).
Grazie ancora delle risposte :)

...ehm... le soluzioni più semplici sono anche le più efficaci... sembra che
io abbia risolto da solo, nella maniera più idiota del mondo... cin>>valore;
Pensavo che "cin>>" potesse leggere solo interi o char ma evidentemente mi
sbagliavo... meglio così :)

 Se utilizzo get(valore,10)
[andry ~] man get
Non c'è una voce per get
Ovvero: dove l'hai sentita get? Non esiste (almeno, non in C e non l'ho 
mai sentita neanche in C++). Ciao.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 sbagliavo... meglio così :)
Hai solo un problema: ignora gli spazi. Ovvero
string str;
cin >> str;
E in input dai Andrea Bergia ti trovi str == "Andrea", perciò fai 
attenzione. Per leggere fino all'invio usa getline (cin, str); come ti ho 
detto nell'altro mio post (un po' confuso effettivamente ;-)). Ciao.


 aarrggghhh!!!! comando?!?!?!?!? è una classe non un comando!!!!
a voler esser precisi&pignoli std::string e` un typedef che si riferisce 
ad una particolare istanza del template std::basic_string<>...
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 Eh già e come la vedi la compatibilità all'indietro?
àtilibitapmoc ?
Ciao,
Nicola
P.S. Non ho resistito :-)