所以我最近一直在尝试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;
}
}
程序是这样的,每当我输入test
时,它应该转到case
而不是default
,它只打印E_URECCOM的内容(这是一个常量) char []包含UNRECOGNISED COMMAND\n
)。
我不知道发生了什么让它做到这一点。有什么想法吗?
答案 0 :(得分:13)
是的,在readln结束时有一个\ n。尝试使用std.string.strip(readln());
答案 1 :(得分:6)
嗯...我还没有尝试过D,但也许readln()在字符串末尾包含CR,LF或CR / LF,它应该包含在比较字符串中?
案例“test \ n”:
答案 2 :(得分:4)
编辑: Adam D. Ruppe的回答是正确的答案:
是的,在readln结束时有一个\ n。尝试使用std.string.strip(readln());
我只是想把它丢在那里,因为我的答案仍有支票
我的回答: 默认情况是catch all case,因此它在最后看起来最好(并且是传统的)
像这样while(cliLoopC)
{
write("?> ");
string iPt_ = std.string.tolower(readln());
switch (iPt_)
{
case "test":
writeln("Hello!");
break;
default: writeln(E_URECCOM); break;
}
}