Int32未在此范围内声明

时间:2009-11-24 03:31:49

标签: c++

我有以下代码:

//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;
}

我正在尝试使用Int32.TryParse()将字符串转换为整数,但是当我编译时,我得到的错误是Int32未在此范围内声明。不知道为什么会出现这种情况,我是否错过了命名空间声明?感谢任何帮助,谢谢

更新: 感谢所有的回复,就像我发布的评论一样,我不是在尝试使用C ++ / CLI,如何将从字符串类声明的字符串转换为整数?

3 个答案:

答案 0 :(得分:3)

请尝试使用atoi()。 States是一个std :: string,所以你需要说:

numStates = atoi( states.c_str() );

答案 1 :(得分:2)

Int32::TryParse Method不是本机C ++ API。它的C++ \CLI方法。 您必须使用.NET Framework并包含命名空间System才能使其正常工作。

如果您只想将字符串转换为整数,则可以使用: atoi()或参考常见问题:How do I convert a std::string to a number?

答案 2 :(得分:1)

看起来您正在使用.NET Int32类编译直接C ++应用程序来解析值。

如果您确实正在编译.NET应用程序,则需要引用System命名空间和CLR支持,或者使用atoi()之类的函数来解析字符串值。