我刚刚开始使用C++但是对其他语言有一些先验知识(不幸的是,不久之后),但是有一个奇怪的困境.我不喜欢使用如此多的IF语句,并且想要使用开关/盒子,因为它看起来更干净,而且我想参与练习..但是......
让我们说我有以下场景(理论代码):
while(1) {
//Loop can be conditional or 1, I use it alot, for example in my game
char something;
std::cout << "Enter something\n -->";
std::cin >> something;
//Switch to read "something"
switch(something) {
case 'a':
cout << "You entered A, which is correct";
break;
case 'b':
cout << "...";
break;
}
}
Run Code Online (Sandbox Code Playgroud)
那是我的问题.假设我想退出WHILE循环,它需要两个break语句?
这显然是错误的:
case 'a':
cout << "You entered A, which is correct";
break;
break;
Run Code Online (Sandbox Code Playgroud)
那么我只能在'a'上做IF语句来使用break ;? 我错过了一些非常简单的事吗?
这将解决我现在遇到的很多问题.
使用类型std::string来接受一个句子,用于练习(我没有在C++中使用过很多字符串)我正在检查一个字符是否是一个元音.我懂了:
for(i = 0; i <= analyse.length(); i++) {
if(analyse[i] == 'a' || analyse[i] == 'e' [..etc..]) {
...vowels++;
} else { ...
...consonants++;
}
Run Code Online (Sandbox Code Playgroud)
如果字符串是一个单词,这可以正常工作,但第二个我添加一个空格(IE:aeio aatest)它只计算第一个块并将空间计为辅音,并退出读取句子(退出for循环或东西).
空格是否计为无字符== null?或者有点奇怪std::string?,知道为什么会发生这种情况会很有帮助!
编辑:我只是通过std :: cin接受字符串,例如:
std::string analyse = "";
std::cin >> analyse;
Run Code Online (Sandbox Code Playgroud)