1.字符串有兩種聲明方式,一是字符串指針方式(也叫字符串數組方式)
二是,利用string類。
2.頭文件<cctype>中,包含很多單個字符的檢測函數,
3.利用指針聲明一個字符串時候,如char *p = “abcd";
*p = a;
4.常量指針(只指向一個數據,不會再變了)
聲明方式爲 char *const pcity = "abcd",
變量指針(可以再指向其他的值)
:普通聲明方式 、char *p = "abcd";
5.常量指針,指向常量數據的指針,分別聲明方法:
常量指針(只能指向一個地址):char *const pch = &ch;
指向常量數據的指針:const char *p = &ch;
指向常量數據的常量指針:const char *const pch = &ch;
1.!號是邏輯運算符(not關係運算符)
2.!=是關係運算符(用於比較)
3.邏輯運算符計算注意事項:
a.如a+b||c+d,先計算邏輯運算符的左邊邏輯分量。
b.邏輯符有優化計算原則,即如果左邊邏輯分量是1(||的情況下),0(&&的情況下),
則不進行右邊邏輯分量的計算了。
4.關係運算符,邏輯運算符的結果是1或0,不是true或者false
5.運算符優先順序:算數運算符 ,移位運算符,關係運算符,按位運算符,邏輯運算符,
條件運算符,賦值運算符,逗號運算符
6.移位運算<<,是向左移(not右移),移動的方向是箭頭的指向。移位運算,左移補零,
右移補符號位
7.賦值運算符:先計算賦值運算符的右邊,即等號的右邊
8.計算機總是儘量將多個運算符組合在一起,即a+++b+++c++,意思是(a++)+(b++)+(c+
+)
9.char型佔用一個字節,默認聲明的char是signed型(和默認聲明的int型一樣)
10.多個不同類型的數據在一起運算時候,會發生類型自動轉換,類型自動轉換的規則是:
類型總是由簡單(低)類型(ˇˍˇ)向複雜類型(高類型)轉換。
類型:有高到低是:long double,double,float,int,char,
11.計算機存儲字符,通常是存儲字符的某種代碼值
12.賦值運算符的結合性自右至左.
13.賦值運算符,的左邊分量必須是一個變量,不能是算數表達式。如:
A.a=7+b+C=a+7
B. C=7+b++=a+7
都是錯誤的,因爲賦值運算符左邊是算數表達式了。
14.若有以下定義: char a;int b;float c; double d;則表達式a*b+d-c值的類型
爲:double
過程:。首先計算 a*b,得到int類型的值,接着計算a*b+d,得到double類型的值,最後
計算a*b+d-c,得到double類型的值。
string a;getline(cin,a);
對string求長度只能用.size()//不能用strlen().
訪問字符串中的字符,可以直接用a[]
如下面程序:計算字符串中字符的出現個數
:
cout<<"輸入字符串"<<endl;
string ch ;
getline(cin,ch);
cout<<"輸入你查找的字符"<<endl;
char key;
cin>>key;
int num = 0;
for (int i =0;i<=ch.size();i++)
{
if (key == ch[i])
{
num++;
}
}
1. 字符串長度
len = str.length();
len = str.size();
2. 字符串比較
可以直接比較
也可以:
str1.compare(str2);
str1.compare(pos1,len1,str2,pos2,len2); 值爲負,0 ,正。
nops 長度到完。
3. 附加
str1 += str2;
或
str1.append(str2);
str1.append(str2.pos2,len2);
4. 字符串提取
str2 = str1.substr();
str2 = str1.substr(pos1);
str2 = str1.substr(pos1,len1);
string a=s.substr(0,4); //獲得字符串s中 從第0位開始的長度爲4的字符串
5. 字符串搜索
where = str1.find(str2);
where = str1.find(str2,pos1); pos1是從str1的第幾位開始。
where = str1.rfind(str2); 從後往前搜。
6. 插入字符串
不是賦值語句。
str1.insert(pos1,str2);
str1.insert(pos1,str2,pos2,len2);
str1.insert(pos1,numchar,char); numchar是插入次數,char是要插入的字符。
7. 替換字符串
str1.replace(pos1,str2);
str1.replace(pos1,str2,pos2,len2);
8. 刪除字符串
str.erase(pos,len)
str.clear();
9. 交換字符串
swap(str1,str2);
打印不同的數,即一個數如果出現多次,只打印一次
#include <iostream>
using namespace std;int main()
{
int numbers[10];
int size = 0;
for (int i = 0; i < 10; i++) {
// Read and store numbers in an array if it is new
cout << "Enter an integer: ";
int value;
cin >> value;
bool isInArray = false; //引入了一個可以改變的布爾變量,用於判斷第一個數自動輸入數組裏面
for (int j = 0; j < size; j++)
if (*(numbers + j) == value) {
isInArray = true;
break;
}
if (!isInArray) {
*(numbers + size) = value;
size++;
}
}
for (int i = 0; i < size; i++)
cout << *(numbers + i) << " ";
return 0;
}
對比下面
void main()
{
int num[10];
cout<<"輸入10個數字"<<endl;
cin>>num[0];
int a = 0, n = 1;
for (int i = 1;i<10;i++)
{
cout<<"輸入10個數字"<<endl;
cin>>a;
int j;
for ( j = 0;j<n;j++)
{
if (num[j]==a)
{
break;
}
}
if (num[j]==a)//
{
continue;//原來的break就這裏出現問題了,可是我不知道怎麼改,麻煩大家幫忙想一想
}
else
{
num[n]=a;
n++;
}
}
for (int k = 0;k<n;k++)
{
cout<<num[k]<<endl;
}
}