を使用してintに文字列から変換できません私はrosterList
と呼ばれる文字列のベクトルにファイルを読み込む:は、最初に私のプログラムではSTOI
100
95
0
-1
110
80
90
-1
120
80
75
-1
130
60
55
-1
この手順が成功しました。私の目標は、上記のデータを使用してStudent
オブジェクトのベクトルを作成することです。動的次いで、それを行うに
Student::Student(string id,string g1,string g2)
線が整数に変換した場合、プログラムは、線によって列線のこのベクトルをループ大きいか又は100に等しく、それはIDである:コンストラクタは、パラメータとして3つの文字列を受け付けID(現在の行)とをパラメータとして、次の2行を渡すことによって、新しいStudent
オブジェクトを作成し、そしてベクターstudentRecords
for (vector<string>::iterator it = rosterList.begin(); it<rosterList.end();it++){
if(stoi(*it)>=100 || it == rosterList.begin()){ // error
studentRecords.push_back(
Student(*it,*(it+1),*(it+2)) // dynamically push
);
}
}
にオブジェクトを追加し、動的エラーがある:
はlibc++abi.dylib: terminating with uncaught exception of type std::invalid_argument: stoi: no conversion
私はそれをオンラインで見て、エラーはstoi
から変換できません。プログラムのどこが間違っていますか?
空行も読んでいて、それを 'stoi'に与えているのでしょうか? – pzelasko
開発とデバッグでは、常にすべての入力をエコーする必要があります。私はあなたのcin文に問題があると推測します(あなたが提示していないコードです)。 [MCVE]を見直して、私たちが見ることのできるいくつかの最小限のコードを表示するか、少なくともそれが動作すると思う理由を説明してください。あなたは名簿をダンプできますか? –
"プログラムのどこが間違っていますか?"これは、デバッガの使い方を学ぶのに最適なタイミングです。 – kfsone