關於字符串輸入及在C和C++中的比較問題

C++中關於字符串問題

如何從鍵盤輸入一串字符並存到字符串中

輸入比較:
scanf():輸入字符串時,碰到空格即判定爲結束。
getchar():輸入單個字符,會把回車和空格也當作字符(getchar()可以用在數字和字符混合時放在數字後面,避免數字後的回車鍵對程序產生影響,或者在程序結尾加上可避免結果閃退)
程序:
char a, b, c, d;
a = getchar();
b = getchar();
c = getchar();
d = getchar();
putchar(a);
putchar(b);
putchar©;
putchar(d);
此時輸入a-回車-b-回車-c-回車-d-回車
結果:a=‘a’,b=’\n’,c=‘b’,d=’\n’,因爲getchar()會把回車也當作字符。
gets():遇到空格不退出,遇到‘\n’纔會結束(我感覺最好的輸入字符串方法)
cin:遇到空格結束

比較

(1)頭文件:
C:#include<string.h> 關於字符數組的函數定義的頭文件
C++: #include< string> 此處是表示一個C++中的string類,和上面不一樣,兩者區別很大,編寫代碼時注意不要用混。

(2)字符串定義:
C:char a[N];
char* b;
C++: string c;
兩種定義的東西不能混到一塊:
比如此處的string類定義的c不能放在C語言中的strcmp()函數中;
char定義的a,b放在string(const char *s,unsigned int n)與string類的c放入含義不同。
示例:
程序:
string a = “abcdef”;
char b[] = “abcdef”;
string s1(a,3);
cout <<“s1=”<< s1 << endl;
string s2(b,3);
cout <<“s2=”<<s2 << endl;
結果:
s1=def
s2=abc

(3)字符串長度k
C:k=sizeof(b)/sizeof(char);
C++:k=a.size();

(4)某些函數功能比較:
複製(字符串a複製到字符串b)
C:strcpy(b,a);
C++:string b(a);
比較(字符串a與字符串b比較)
C:if(strcmp(a,b)==0);(還有一個stricmp()函數,比較兩個字符串不區分大小寫,strcmp()是區分大小寫的)
C++: if(a == b);
拷貝字符串(將字符串b添加到字符串a後面)
C:strcat(a,b);
C++:a+=b;

C語言和C++中還有很多簡單的函數,便於代碼更快編寫,如需瞭解更多C語言中關於字符串的函數和C++關於字符串的函數麻煩自行搜索。
本文主要講一些C語言#include<string.h>頭文件和C++中string類的一些區別。兩種頭文件使用時注意不要用混,看清定義方式以及函數運用是C中的還是C++中的。
有更多意見歡迎評論指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章