3

私が知っている多くのプログラマーが C++ で学ぶことを勧めているので、私は最近 D を試しています。

DMD Compiler v2.057 を使用しています。これが私のコードです。

while(cliLoopC)
{
    write("?> ");
    string iPt_ = std.string.tolower(readln());
    switch (iPt_)
    {
        default: writeln(E_URECCOM); break;
        case "test":
            writeln("Hello!");
            break;
    }
}

このプログラムは、 を入力するたびに、 の代わりに にtest移動する必要があり、 E_URECCOM ( を含む定数 char[] ) の内容を出力するだけです。casedefaultUNRECOGNISED COMMAND\n

これを行うために何が起こっているのかわかりません。何か案は?

4

3 に答える 3

13

はい、readln の最後に \n があります。使ってみてstd.string.strip(readln());

于 2012-08-01T00:25:01.560 に答える
6

うーん... D は試していませんが、おそらく readln() は文字列の末尾に CR、LF、または CR/LF を含めており、比較対象の文字列に含める必要がありますか?

ケース "テスト\n":

?

于 2012-08-01T00:21:30.320 に答える
4

編集: Adam D. Ruppeの答えは、次のように言って正しい答えです:

はい、readln の最後に \n があります。std.string.strip(readln()); を使用してみてください。

私の答えにはまだチェックがあるので、そこにそれを入れたかっただけです

私の答え: デフォルトのケースはすべてをキャッチするケースです。

このような

while(cliLoopC)
{
    write("?> ");
    string iPt_ = std.string.tolower(readln());
    switch (iPt_)
    {
        case "test":
            writeln("Hello!");
            break;
        default: writeln(E_URECCOM); break;
    }
}
于 2012-08-01T00:19:23.783 に答える