私の問題は、次のように文字列を定義したことです。
string messages = "This is an option; This is a really long option; Another One For Testing Sake; This is the last one I swear; You lied to me!";
「;」文字列内の文字は区切り記号のように扱われます。物事の壮大なスキームでは、この文字列は関数に呼び出されますres.addMessages(messages);
。そのコードは次のとおりです。
void ConflictResMenu::addMessages(string messages) {
int idx = 0;
for (int i = 0; i < messages.length(); i++) {
cout << messages.find_first_of(';') << endl;
if (messages[i] == this->delim) {
this->split_messages.push_back(messages.substr(idx, i));
idx = i + 1;
}
}
}
これに関する問題は、if 句が間違ったタイミングで呼び出されるため、出力が次のようになることです。
This is an option
This is a really long option; Another One For
Another One For Testing Sake; This is the last one I swear; You lied to me!
This is the last one I swear; You lied to me!
正直なところ、ここで何が起こっているのかわかりません。誰かがこれに近づくためのより良い方法を助けたり提案したりできるなら、私はとても感謝しています.