Switch语句始终解析为默认值而不是大小写

LMS*_*LMS 3 d evaluate switch-statement

所以我最近一直在尝试D,因为我认识的许多程序员都建议我通过C++学习它.

我正在使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

程序是这样的,每当我输入时test,它应该转到case而不是default,它只打印E_URECCOM的内容(这是一个包含的常量char [] UNRECOGNISED COMMAND\n).

我不知道发生了什么让它做到这一点.有任何想法吗?

Ada*_*ppe 13

是的,在readln结束时有一个\n.尝试使用std.string.strip(readln());


im8*_*bit 6

好吧......我还没有尝试过D,但也许readln()在字符串末尾包含CR,LF或CR/LF,它应该包含在比较字符串中?

案例"test \n":