c風格字串並不是一種型別,它指的是一種程式設計習慣,指c語言中以'\0'結尾的字串。c語言中沒有字串型別,通常用字串陣列來存放乙個字串;可以直接將乙個字串直接量(字面量)直接賦值給陣列(可以定義長度也可以不指定),編譯器會在字元陣列末尾自動的新增'\0'作為串的結束符。
用字串給字元陣列賦值時由於要新增結束符'\0',陣列的長度要比字串的長度大1.
puts和printf在輸出字串時會逐個掃瞄字元,直到遇見'\0'才結束。
c語言中字串定義方式有兩種:char *s或者char s,都屬於c風格字串,其區別是char *s定義的字串直接量儲存在記憶體的資料段中且不可更改,字元陣列儲存在棧記憶體中。
//例:以下程式會報錯,因為danny儲存在記憶體資料段中,不可更改。
char *src = "danny";
const char *addition = "andy";
strcat(src, addition);
//正確形式
char src[20] = "danny";
const char *addition = "andy";
strcat(src, addition);
注意:c風格字串以'\0』結尾,標頭檔案cstring和string.h中定義的函式strlen、strcat等函式操作的物件是c風格字串。
//c風格字串轉string:直接賦值
char *ch1="123456";
string str=ch1;//直接賦值即可
cout
string st=ch;//直接賦值
//string轉c風格字串:兩種方式c_str() data()
string str2="gsghd";
const char *s=str2.c_str();//.c_str()返回字串常量
printf("%s\n",s);
const char *cs=str2.data();
printf("%s\n",cs);
//c字元陣列輸入方式:
char ch[100];
//scanf("%s",ch);//c字串輸入方式
//printf("%s\n",ch);
char *ch2;
//scanf("%s",ch2);報錯,ch2未被初始化指向不明
//ch2=(char *)malloc(sizeof(char));
//scanf("%s",ch2);//已經分配好空間
gets(ch);
printf("%s\n",ch);
//陣列遍歷:需要獲取長度,使用函式strlen
int len=strlen(ch);
for(int i=0;i//c風格字串拼接strcat
char ch[100]="";
for(int i=0;i<10;i++)
printf("%s\n",ch);
//使用sprintf
char s[100];
for(int i=0;i<2;i++)
printf("%s\n",s);
//string拼接
string str1="skkk";
stringstream ss;
ss
cout/c11 語法
//to_string方法會導致多重定義問題,adding #define __use_mingw_ansi_stdio 0 to the start
//of the code,before any includes, which disables the definition of vsnprintf in
string str2="ksksks";
string res = str2 + to_string(5);
cout/string 拼接 字元
string str3=str2+'c';
cout<
C風格字串與C 風格字串
c風格字串 對字串進行操作的 c 函式定義在標頭檔案中 1.字串定義 char result 2.字串的最後乙個字元是null字元 0 可以通過這個字元確定字串的結尾。3.strlen 返回的是字串的大小 因此,分配空間的時候,需要比字串的實際空間大1.e.g.char copystring con...
C風格字串與C 風格字串
c風格字串 對字串進行操作的 c 函式定義在標頭檔案中 1.字串定義 char result 2.字串的最後乙個字元是null字元 0 可以通過這個字元確定字串的結尾。3.strlen 返回的是字串的大小 因此,分配空間的時候,需要比字串的實際空間大1.e.g.char copystring con...
string和C風格字串
include include include include 雖然改變s後,仍然輸出正確,但是切記 無法保證c str 返回的陣列一直有效,保險做法是拷貝乙份 改進後 include include include include 雖然改變s後,仍然輸出正確,但是切記 無法保證c str 返回的陣...