2

以下の簡単なプログラムをコンパイルしようとすると、コンパイル エラーが発生します。

error: ‘stoi’ was not declared in this scope

#include <string>両方を含めようとしましたが、#include <string.h>まだこれらの問題が発生しています。私は Ubuntu を使用しており、g++ をどのようにインストールしたか思い出せませんが、apt-get install g++ コマンドを使用していたことは確かなので、使用している g++ または C++ ライブラリのバージョンはわかりません。

#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

struct Data
{
    string fname;
    string lname;
    int age;
};

int main()
{
    bool toContinue = true;
    Data data;
    string buffer;
    do
    {
        try
        {
            getline(cin,data.fname);
            getline(cin,data.lname);
            getline(cin,buffer);
            data.age = stoi(buffer);
            cout<<data.fname<<" ";
            cout<<data.lname<<" ";
            cout<<data.age<<endl;
        }
        catch(std::invalid_argument)
        {
            cerr<<"Unable to parse integer";
        }
    }while(toContinue);

    return 0;
}

私の目標は、ユーザーが変数のいずれかにジャンクを入力した場合に例外処理を使用できるようにすることです。

4

2 に答える 2

5

ドキュメントを見ると、C++11 で導入されたことがわかります。-std=c++11コードはデフォルトで C++11 としてコンパイルされないため、これらの機能を有効にするオプションを使用してコードをコンパイルする必要があります。

Drew は、C++03 を使用している場合は、

boost::lexical_cast<int>(buffer)

于 2013-03-18T01:01:45.303 に答える
2

結局のところ、それが機能するためにはこれが必要でした...

g++ -std=c++0x ./main.cpp
于 2013-03-20T00:36:53.857 に答える