目录
char
和int
类型能自动互相转换, 注意++ch
得到char
类型的值, 而ch + i
会得到int
类型的值char
类型的值给int
变量, 则会使输入失效, 无法再读取输入, 一般还会将此int
变量设置为0。switch
语句时, 最好用char
类型的变量作为标签cin>>charr
: 使用空白, 如空格、制表符和换行符确定字符串的结束位置cin.getline(charr, size)
: 将一行中的最多size-1个字符读入charr中cin.get()
: cin.get(charr1, size1).cin.get().cin.get(charr2, size2)
cin.get()
: 读取并返回下一个字符cin.get(ch)
: 读取下一个字符, 通过引用存入ch中cin.get(charr, size)
: 将一行中的最多size-1个字符读入charr中<type> <identifier>: <bits>;
函数名称 | 功能 |
---|---|
isalnum() |
检查字符是否是字母或数字 |
isalpha() |
检查字符是否是字母 |
isbkank() |
检查字符是否是空格 |
iscntrl() |
检查字符是否是控制字符 |
isdigit() |
检查字符是否是十进制数字 |
isgraph() |
检查字符是否是能以图形表示的字符 |
islower() |
检查字符是否是小写字母 |
isprint() |
检查字符是否是可打印的(isgraph() 检查为真的字符加上空格) |
ispunct() |
检查字符是否是标点符号 |
isspace() |
检查字符是否是标准空白字符, 如空格、进纸、换行符、制表符等 |
isupper() |
检查字符是否是大写字母 |
isxdigit() |
检查字符是否是十六进制数字 |
tolower() |
将大写字符转换为小写形式 |
toupper() |
将小写字符转换为大写形式 |
ASCII values | characters | iscntrl | isblank | isspace | isupper | islower | isalpha | isdigit | isxdigit | isalnum | ispunct | isgraph | isprint |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 .. 0x08 | NULL, (other control codes) | o | |||||||||||
0x09 | tab (‘\t‘) | o | o | o | |||||||||
0x0A .. 0x0D | (white-space control codes: ‘\f‘,‘\v‘,‘\n‘,‘\r‘) | o | o | ||||||||||
0x0E .. 0x1F | (other control codes) | o | |||||||||||
0x20 | space (‘ ‘) | o | o | o | |||||||||
0x21 .. 0x2F | !"#$%&‘()*+,-./ | o | o | o | |||||||||
0x30 .. 0x39 | 0123456789 | o | o | o | o | o | |||||||
0x3a .. 0x40 | :;<=>?@ | o | o | o | |||||||||
0x41 .. 0x46 | ABCDEF | o | o | o | o | o | o | ||||||
0x47 .. 0x5A | GHIJKLMNOPQRSTUVWXYZ | o | o | o | o | o | |||||||
0x5B .. 0x60 | [\]^_` | o | o | o | |||||||||
0x61 .. 0x66 | abcdef | o | o | o | o | o | o | ||||||
0x67 .. 0x7A | ghijklmnopqrstuvwxyz | o | o | o | o | o | |||||||
0x7B .. 0x7E | {|}~ | o | o | o | |||||||||
0x7F | (DEL) | o |
int* arr[10];
将声明一个包含十个int*
类型指针的数组int (*arr)[10];
将声明一个指向一个包含十个int
值的数组的指针int arr[]
与int* arr
等效, 且int arr[]
只能在这种情况下使用(除非是在初始化时且指定了确定的值, 这时会自动确定数组大小)cin
将eofbit
和failbit
都设置为1, cin.eof()
返回true
, cin.failbit()
返回ture
eofbit
为true
后, cin将关闭对输入的进一步读取, 这会导致用cin.get()
锁住屏幕的技术在这里不适用cin.clear()
函数可以清除eofbit
从而恢复输入iostream
类提供了一个可以将istream
如cin
转换为bool
类型的隐式转换函数char ch;
while(cin.get(ch)){
// do something here
}
在cstdio
中定义了getchar()
与putchar()
, 可以用cin.get()
与cin.put()
实现相同的功能。
相应地用EOF检验文件尾。
下面代码中还使用int
变量代替char
变量。
char ch; // int ch;
cin.get(ch);
while(cin.fail() == flase) // ch != EOF
{
cout << ch; // cin.put(ch);
++count;
cin.get(ch); // ch = cin.get();
}
int ch; // char ch;
cin.get(ch);
while(ch != EOF) // cin.fail() == flase
{
cin.put(ch); // cout << ch;
++count;
ch = cin.get(); // cin.get(ch);
}
使用>>
运算符从输入流获取数字或字符时会将\n
留在输入流。\n
会被留在输入流中
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
cout << "Please enter one of the following choices: " << endl;
cout << "c) carnivore\tp) pianist" << endl;
cout << "h) show help\tq) quit" << endl;
char ch;
if(!(cin >> ch)) exit(EXIT_FAILURE);
while(ch != 'q'){
switch(ch)
{
case 'c':
cout << "Tigger, dog, bear or wolf?" << endl;
break;
case 'p':
cout << "No, I'm not a pianist." << endl;
break;
case 'h':
cout << "Please enter one of the following choices: " << endl;
cout << "c) carnivore\tp) pianist" << endl;
cout << "h) show help\tq) quit" << endl;
break;
default:
cout << "Enter \'h\' for help." <<endl;
break;
}
if(!(cin >> ch)) exit(EXIT_FAILURE);
}
return 0;
}
cin
向int
类型变量n
输入字符串
n
的值不变cin
对象中的一个错误标记被设置cin
以接受新的输入#include <iostream>
const int MAX = 5;
int main()
{
using namespace std;
//getdata
int golf[MAX];
cout << "Please enter your golf scores.\n";
cout << "You must enter " << MAX << " turns.\n";
int count;
for (count = 0; count < MAX; count++) {
cout << "Round #" << count + 1 << ": ";
while (!(cin >> golf[count])) {
cin.clear(); // reset input
while (cin.get() != '\n')
continue; // get rid of bad input
cout << "Please enter a number: ";
}
}
// calculate average
double total = 0.0;
for (count = 0; count < MAX; count++)
total += golf[count];
// report results
cout << "Average score = " << total / MAX;
return 0;
}
Please enter your golf scores.
You must enter 5 turns.
Round #1: 88
Round #2: 87
Round #3: Must I?
Please enter a number: 103
Round #4: 94
Round #5: 86
Average score = 91.6
语法:
enum <enumeration> {<enumeraters>};
枚举量的值
枚举变量的限制
enum clothes {hat, trousers, shirt, pants};
clothes mine = shirt;
clothes yours = 0; //error
enum class <enumeration> {<enumeraters>};
enum struct <enumeration> {<enumeraters>};
这样定义的枚举,要使用枚举量的话要用作用域解析运算符来限定。可以避免不同枚举的枚举量之间发生冲突。
另外,普通枚举量在需要的时候能自动转换为整型,但作用域内枚举不行。
enum class egg{small, medium, big, large};
enum class t_shirt{small, medium, large, xlarge};
egg mine = egg::large;
t_shirt yours = t_shirt::large;
在C++11中还可以指定枚举量的底层整数类型。C++11中枚举量的底层整数类型为int
,但可以通过以下语法指定所需类型。
enum class : short egg{small, medium, big, large};
enum : short t_shirt{small, medium, large, xlarge};
原文:https://www.cnblogs.com/alohana/p/12293139.html