この割り当てを行うと、情報を構造体に解析し、テストしようとすると "範囲外の文字列"というエラーが返されます。私が間違っていた場所を見つけ出す。"文字列下付き文字を範囲外に"受け取るエラー
はここにあなたが空のstd ::文字列オブジェクトを作成し、特定の位置に文字を割り当てた場合は、ここで私の機能
baby_type Parse_Line(const std::string line)
{
baby_type baby;
std::string name;
std::string year;// = "0000";
std::string total;
int i = 0;
int k = 1;
int LengthOfOccurences = 0;
int DigitOfOccurences = 0;
while (line.at(i) != ',') {
name[i] = line.at(i);
i++;
}
baby.name = name;
i++;
while (k < 100) {
if (line.at(i) == ',') {
year.resize(LengthOfOccurences);
baby.yearsCount.at(k) = std::stoi(year);
//year = "0000";
i++;
k++;
DigitOfOccurences = 0;
LengthOfOccurences = 0;
}
else {
year.at(DigitOfOccurences) = line.at(i);
i++;
LengthOfOccurences++;
}
}
int m = 0;
int LengthOfLine = line.length();
while (i < LengthOfLine) {
total.at(m) = line.at(i);
m++;
i++;
}
baby.total = std::stoi(total);
return baby;
}
どういう意味ですか –
長さを確認する前に 'line'からたくさんの文字を読んでいます。一見すると、 'line.at(i)'コールは、カンマが100個未満の場合は 'line'の最後まで実行されないようです。あなたは 'line'の終わりに達します。 –
@Reneの改善を加えてください。あなたは 'i'変数を増やしており、この命令の1つは範囲外です。あなたはそれを制限する必要があります。コードをチェックした後、私は 'year.at(DigitOfOccurences)= line.at(i);'という行もまた問題を引き起こしていると確信しています。それを書き直してください。 – Fr333du