Я пытаюсь преобразовать строку два символа в целое, но я получаюC++: Не удалось преобразовать строку в целое
error: invalid cast from type 'std::basic_string<char>' to type 'int'
, когда я запускаю его. Вот код.
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class Instruction
{
private:
vector<string> Inst;
public:
void readFile(string infile)
{
ifstream myfile (infile);
if (myfile.is_open())
{
while (getline(myfile, line))
{
Inst.push_back(line);
}
myfile.close();
}
else
cout << "Unable to open file." << endl;
}
void runProcess()
{
for (int i=0; i<Inst.size(); i++)
{
op_code = getOperation(Inst[i]);
Я пропущу остальную часть runProcess, так как это неважно. Ниже, у меня есть
int getOperation(string inst)
{
return (int)inst.substr(2);
}
, в котором я столкнулся с проблемой. Я пробовал (int), stoi и atoi. Ничего не сработало.
Я довольно новичок в C++, так что это очень хорошо может быть проблемой при попытке передать строку из вектора, но я не уверен. Если мне нужно опубликовать что-нибудь еще, дайте мне знать. Любая помощь будет принята с благодарностью.
Что не работает, используя 'stoi()'? –
Некоторые версии g ++ не поддерживают 'std :: stoi'. См. Http://stackoverflow.com/questions/14743904/stdstoi-missing-in-g-4-7-2. Однако вы можете использовать 'std :: atoi'. 'return std :: atoi (inst.substr (2) .c_str());' –
@ πάνταῥεῖ std :: stoi() дал ошибку 'stoi не является членом std', а просто std() дал 'stoi is не объявлено в этой области ' – cec526