常见的语句for,if,else,while都熟了。写一些用的不熟的。
switch语句
- switch有很多的标签,如果表达式和某个case标签的值匹配,程序从该标签的第一条语句开始执行,直到达到了switch的结尾或者遇到一条break;
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
while (cin >> ch)
{
switch (ch)
{
case 'a':
++aCnt;
break;
case 'e':
++eCnt;
break;
case 'i':
++iCnt;
break;
case 'o':
++oCnt;
break;
case 'u':
++uCnt;
break;
default:
break;
}
}
system("pause");
return 0;
}
- 然而,有一些默认的switch行为才是程序真正需要的。当几个case串在一起时无论那个都执行相同的代码。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
unsigned aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0;
char ch;
while (cin >> ch)
{
switch (ch)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
++uCnt;
break;
}
}
system("pause");
return 0;
}
-
default标签
如果没有一个case标签能和switch匹配,程序将执行紧跟在default标签后面的语句。
范围for语句
-
形式如下:
for (declaration:expression)
statement
- 循环变量必须声明为引用类型
vector<int> v={0,1,2,3,4,5,6,7,8,9};
for(auto &r:v)
r*=2;
你会发现引用不是只能绑定一次吗,为什么可以便利所用呢?其实是下面的等价。
for (auto beg = v.begin(), end = v.end(); beg != end; ++beg)
{
auto &r = *beg;
r *= 2;
}
continue语句
- continue语句只能出现在for\while\do while循环内部
- 仅作用于离他最近的循环,continue语句中断当前循环但是仍然继续执行循环
#include <iostream>
#include <string>
using namespace std;
int main()
{
string buf;
while (std::cin >> buf && !buf.empty())
{
if (buf[0] != '_')
{
continue;//接着读入下一个输入
}
std::cout << "Hello World!\n";//程序执行到了这里说明输入的是以下划线开始的
}
}
goto语句
- 作用是从goto 语句无条件跳转到同意函数内的另一条语句
goto语句的语法形式
goto label;
其中,label是用于标识一条语句的标识符如:end : return;
try语句块和异常处理
- 异常处理是指存在于运行时的反常行为。例如,如果程序的问题是输入无效,这一场处理部分可能会要求用户重新输入人正确的数据;如果丢失了数据库链接会发出警报信息。包括:
- throw表达式
- try语句块:以一个和多个catch子句结束。
- 异常类(exception) 用于在throw表达式和相关的catch子句之间传递异常的具体信息。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string buf;
int a = 0;
begin:
a = 10;
while (std::cin >> buf && !buf.empty())
{
std::cout << a++ << endl;
try
{
if (buf[0] != '_')
{
continue;//接着读入下一个输入
}
if (buf[0] != 'A')
{
throw runtime_error("A is not number!");
}
}
catch (runtime_error err)
{
std::cout << err.what()
<< "Agaiin? y or n" << endl;
char c;
cin >> c;
if (!cin || c == 'n')
break;
else
{
goto begin;
}
}
}
}
参考:C++primer 第五版
网友评论