入力に同様のバリエーションを見つけてそれらとifステートメントの正確な答えを受け入れるコマンドがc ++にあるかどうかを知りたいと思っていました。
例:
ユーザーが「こんにちは」
と入力し、ifステートメントが「こんにちは」を有効にする必要がある場合
、自分ですべてのバリエーションを入力する必要がないことを除いて、どのように作成できますか?します。
みんなありがとう。
入力に同様のバリエーションを見つけてそれらとifステートメントの正確な答えを受け入れるコマンドがc ++にあるかどうかを知りたいと思っていました。
例:
ユーザーが「こんにちは」
と入力し、ifステートメントが「こんにちは」を有効にする必要がある場合
、自分ですべてのバリエーションを入力する必要がないことを除いて、どのように作成できますか?します。
みんなありがとう。
ある種の編集距離を計算するのはどうでしょうか。ケースの変化を非常に短い距離で重み付けし、特定のしきい値を下回るすべての入力を受け入れることができます。
バリエーションがたくさんあり、それらを列挙するのが面倒な場合は、正規表現パーサーを介して入力を実行することを検討することをお勧めします。軽量なのはT-Rexです。
文字列を大文字にしてから、大文字の文字列を比較します。
理論的には、これは大文字のさまざまな各国語の規則に違反する可能性があることに注意してください。これは、C++ 標準ライブラリが大文字のサポートを非常に貧弱にしていることの 1 つの理由のようです (100% 完全に実行できない場合は、実行しないでください)。 .
ただし、実際には、問題のある国別文字列は簡単に回避できます。
乾杯 & hth.,
入力文字列を小文字にします。
次に比較します。
std::string answer;
std::cin >> answer;
std::transform(answer.begin(), answer.end(), answer.begin(), ::tolower);
if (answer == "hi")
{
std::cout << "Wrong answer\n";
}