我有以下代码:
//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,如何将从字符串类声明的字符串转换为整数?
答案 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()
之类的函数来解析字符串值。