什麼是字元
字元包含了
但不只這些!
//宣告
char c;
//給值
c = 'a';
//初始化
char ch = 'a';
char c;
cin>>c;
cout<<c;
怎麼輸出反斜線和引號
cout<<'\'; //?
cout<<'''; //?
error: missing terminating ' character
用反斜線輸出特殊符號
cout<<'\\'; //output: \
cout<<'\''; //output: '
電腦只有0跟1欸
example 1:
int c = 'a';
cout<<c<<endl; //output: 97
int c = 97;
cout<<char(c)<<endl; //output: a
example 2:
char c = 97;
cout<<c<<endl; //output: a
char c = 'a';
cout<<int(c)<<endl; //output: 97
小練習
用迴圈印出a~z (ascii code 97~122)
(X) cout<<"abcdefghijklmnopqrstuvwxyz"
#include<iostream>
using namespace std;
int main()
{
for(int i = 97; i<=122; ++i)
cout<<char(i);
return 0;
}
#include<iostream>
using namespace std;
int main()
{
for(char c = 'a'; c <= 'z'; ++c)
cout<<c;
return 0;
}
例如:'p'+1, 'q'-2
可以
char c = 'a';
cout<<c<<endl;
c+=2;
cout<<c<<endl;
c-=1
cout<<c<<endl;
if('b'=='a'+1)
cout<<"yes\n";
if(98=='a'+1)
cout<<"correct\n";
例如:'Q'-'P'
也可以
char c = 'z';
cout<<c-'a'<<endl;
cout<<'c'+'A'-'b'-'B'<<endl;
如果輸入大寫,就輸出小寫
如果輸入小寫,就輸出大寫
if(c=='A') cout<<'a';
else if(c=='B') cout<<'b';
else if(c=='C') cout<<'c';
...
大寫字元 | ASCII | 小寫字元 | ASCII |
---|---|---|---|
A | 65 | a | 97 |
B | 66 | b | 98 |
C | 67 | c | 99 |
… | … | … | … |
Z | 90 | z | 122 |
char c;
cin>>c;
if(65<=c && c<=90)
{
c+=32;
cout<<c;
}
else if(97<=c && c<=122)
{
c-=32;
cout<<c;
}
char c;
cin>>c;
if('A'<=c && c<='Z')
{
c+='a'-'A';
cout<<c;
}
else if('a'<=c && c<='z')
{
c-='a'-'A';
cout<<c;
}
一個字元一個字元的說話很累耶
char s = 's', p = 'p', r = 'r', o = 'o', u = 'u', t = 't';
cout<<s<<p<<r<<o<<u<<t;
把多個字元串在一起=>字串
怎麼做?
0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
's' | 'p' | 'r' | 'o' | 'u' | 't' | '\0' |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
's' | 'p' | 'r' | 'o' | 'u' | 't' | '\0' |
會輸出甚麼?
char str[100] = "HelloWorld";
str[5] = '\0';
cout<<str;
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
'H' | 'e' | 'l' | 'l' | 'o' | 'W' | 'o' | 'r' | 'l' | 'd' | '\0' |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
'H' | 'e' | 'l' | 'l' | 'o' | '\0' | 'o' | 'r' | 'l' | 'd' | '\0' |
char str1[100] = "Hello";
char str2[] = "World";
char str3[100] = {'c', 'p', 'p', '\0'};
char str[10];
cin>>str; //至多輸入?個字元
cout<<str;
char a[6] = "abcde";
char b[6];
b = a;
cout<<b<<"\n";
error: invalid array assignment
你會這樣做嗎
int a[6] = {1, 2, 3, 4, 5, 6};
int b[6];
b = a;
cout<<b<<"\n";
不會,所以字元陣列也不能這樣操作
char a[6] = "abcde";
char b[6];
for(int i = 0; i<6; ++i)
b[i] = a[i];
cout<<b<<"\n";
輸入 | 輸出 | 輸入 | 輸出 | |
---|---|---|---|---|
a | d | x | a | |
b | e | y | b | |
c | f | z | c | |
輸入皆為小寫字母,位移3再輸出 |
#include<iostream>
using namespace std;
int main()
{
char str[600];
cin>>str;
for(int i = 0; str[i]!='\0'; ++i)
//TODO
cout<<str<<"\n";
}
char arr[3][4] = {"abc", "def", "ghi"};
//3個字串
//每個字串包含'\0'最多4字元
0 | 1 | 2 | 3 | |
---|---|---|---|---|
0 | 'a' | 'b' | 'c' | '\0' |
1 | 'd' | 'e' | 'f' | '\0' |
2 | 'g' | 'h' | 'i' | '\0' |
char arr[3][10]
for(int i = 0; i<3; ++i)
cin>>arr[i];
for(int i = 0; i<3; ++i)
cout<<arr[i]<<'\n';