2009-11-24 9 views
0

Je le code suivant:Int32 non déclaré dans ce cadre

//Comp454 program 2 
#include <iostream> 
#include <string> 
#include <fstream> // file I/O support 
#include <cstdlib> // support for exit() 
const int SIZE = 60; 

int main() 
{ 
using namespace std; 
string states; 
int numStates = 0, i = 0, stateVar = 0; 
string line; 
char filename[SIZE]; 
ifstream inFSM, inString; 

//Open FSM definition 
cout << "Enter name of FSM definition: "; 
cin.getline(filename, SIZE); 
inFSM.open(filename); //Associate inFile with a file 
if (!inFSM.is_open()) // failed to open file 
{ 
cout << "Could not open the file " << filename << endl; 
cout << "Program terminating.\n"; 
exit(EXIT_FAILURE); 
} 

//Process FSM definition line by line until EOF 
getline(inFSM, states); 
numStates = Int32.TryParse(states); 

//Check for num of states 
if(numStates > 10) 
{ 
    cout << "There can be no more than 10 states in the FSM definition, exiting now." << endl; 
    return 0; 
} 

while (!inFSM.eof()) // while input good and not at EOF 
{ 
    getline(inFSM, line); 
    cout << line << endl; 
} 

return 0; 
} 

Je suis en train de convertir une chaîne en un entier en utilisant Int32.TryParse(), mais quand je compile j'obtiens l'erreur que Int32 n'a pas été déclaré dans ce contexe. Je ne sais pas pourquoi cela arrive, est-ce que je manque une déclaration d'espace de noms ?? Toute aide est appréciée, merci

MISE À JOUR: Merci pour toutes les réponses, comme dans le commentaire que j'ai posté, je ne cherche pas à utiliser C++/CLI, comment convertir une chaîne, déclarée à partir de la classe de chaîne , à un entier?

Répondre

3

Essayez d'utiliser atoi() à la place. Unis est un std :: string donc vous devez dire:

numStates = atoi(states.c_str()); 
+1

je préfère conseiller 'strtol', comme' atoi' n'a pas de mécanisme de rapport d'erreurs (vous ne savez pas si vous avez analysé un nombre égal à zéro correctement, ou si vous avez échoué à analyser une chaîne qui n'est pas un nombre - dans les deux cas vous obtenez '0' de' atoi'). –

1

Il semble que vous compiliez une application straight-C++ en utilisant la classe .NET Int32 pour analyser une valeur. Vous devrez soit référencer l'espace de noms System et la prise en charge CLR si vous compilez effectivement une application .NET, ou utilisez une fonction comme atoi() pour analyser votre valeur de chaîne.

Questions connexes