c/c++中的字串一般末尾都有預設的」0\「,所以一般都是n+1個開銷,容易造成越界。
char str[10];
strcpy(str, "0123456789");//報錯,因為str至少要11才能複製
執行下面的程式,結果是什麼?
char str1 = "hello";
char str2 = "hello";
if (str1 == str2)
cout << "str1 str2 are same" << endl;
char* str3 = "hello";
char* str4 = "hello";
if (str3 == str4)
cout << "str3 str4 same" << endl;
實際的結果是輸出str3 str4 same,這是因為為了節省記憶體,c++把常量字元放在單獨的記憶體區域,當指標賦值給相同的常量字串時,實際會指向相同的記憶體位址。也就是說str3和str4中的位址是一樣的。
得到帶空格的sting型別輸入,在c++中,string的處理是非常靈活的,但是會遇到cin>>str時,自動過濾空格的情況,這時候,怎麼辦。
如華為機考的一道題。
計算字串最後乙個單詞的長度,單詞以空格隔開。
輸入描述:
一行字串。輸出描述:
整數n,最後乙個單詞的長度。輸入例子:
hello world輸出得到的是5,用cin>>str的話,就一直會報錯,因為,自動過濾了空格,這就用用到 getline(cin,str)。
#include#includeusing namespace std;
//要考慮邊界,就是當沒有' '的時候
int returnnum(string a)
i--; }
return len-i-1;
}int main()
轉換進製,輸入"0xa1"的16進製制字串,輸出十進位制,注意進製的轉換。
int turnde(string str)
else if ((str[i] >= 'a') && (str[i] <= 'f'))
temp = temp*pow(16, len-i-1);
count += temp;
} return count;
}
字串賦值,如下**,第一次編的時候,給str2賦值的時候,用了str2[i]=str1[len-i-1],這樣是不行的,要用+=的操作。
#include#include#includeusing namespace std;
int main()//目的,求一串字串中映象的長度,如12abba,abba為映象,那麼輸出為4
for (i = 0; i < len; i++)
count = (cnt>count) ? cnt : count;}}
cout << count << endl;
} return 0;
}
string中大小寫轉換的用法。
#include#includeusing namespace std;
int main()
cout << a;
} return 0;
}
C C 之字串問題
問題描述 給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串s,由大小寫英文本母組成。第二行包含乙個數字,表示大小...
C C 中的字串
getch函式 head file include conio.h 功能 從控制台無回顯的讀取乙個字元 用法 int void getch 該函式函式經常用於互動輸入的過程中完成暫停等功能 getche函式 head file include conio.h 功能 從控制台帶回顯的讀取乙個字元 用法...
字串彙總
字串的暴力,挺無腦的,沒什麼想說的。inline void init inline int query int l,int r 第一次是橫著hash,用的是p1,此時的 h 表示的是第 i 行長度為 j 的字首串的hash值。第二次是豎著hash,用的是p2,此時的 h 發生了更新,此時的 h 變成...