1. 程式人生 > >C++和C對字串操作總結

C++和C對字串操作總結

一 c語言的字串
c語言中沒有字串這個資料型別,用兩種方法來表示字串,第一種是字元陣列char s[],第二種是字元指標char *s, 兩者有區別,不能任務是一樣的,區別如下(不完整,後期再慢慢補充)
1 初始化和賦值
char[]字串賦值c語言中可以用“=”對字串初始化,但是不能用“=”對其賦值,否則會出現類似於如下的錯誤:

error: incompatible types in assignment ofconst char **’ tochar **’

如果要對c字串賦值可以使用strcpy()函式。

char *定義的是字串常量,不能對其修改除非使用new對其重新分配記憶體.但是可以對定義的指標修改,如下:

int len_c;
// char[]
char msg[11] = "hello c";
//msg = "hello c string";  //錯誤
strcpy(msg,  "hello string");  //正確

//char*
char *s = "hwllo"; //編譯器版本高的時候此處可能會有警告,加上const即可,因為這是定義了字串常量
s = "hello"; // 對指標重定義,允許
s[1] = "e" //對字串常量修改,不允許

2 求c字串的長度/strlen和sizeof的區別
函式: size_t strlen ( const char * str )
標頭檔案: string.h
c語言字串結尾會自動新增一個‘\0’表示字串結束,strlen是計算從字串開始到‘\0’的長度,結果有可能不固定。
比如char s[10], strlen(s)的結果可能不是固定的,視編譯器而定,如果char s[10] = {‘\0’},strlen(s)為0

sizeof()返回的是變數聲明後所佔的記憶體數,不是實際長度,此外sizeof不是函式,僅僅是一個取位元組運算子

3 c字串常用操作
puts() 輸出
char c[] = “aa”;
puts(c);

gets() 輸入
char gt[15];
gets(gt);

strcat()字串連線函式
char a1[10] = “hello”;
char a2[10] = “c”;
strcat(a1, a2);

strcpy() 字串複製
char a1[10];
char a2[10] = “hello c”;
strcpy(a1, a2);
a2為”hello c”

strcmp()字串比較,按照ASCALL碼的大小逐個比較兩個字元陣列中的各個字元,知道出現不相同的或者遇到結束符
strcmp(字元陣列1,字元陣列2);
相等返回0
字元陣列1大於2返回正整數
字元陣列1小於2返回負數

strlen()返回字串實際長度

二 c++中string的操作
1 取子串substr(),包含標頭檔案string、iostream
原型string substr (size_t pos = 0, size_t len = npos) const;
從源字串中的下標為pos的地方獲取長度為npos的長度,如果第二個引數為空,則代表從pos一直獲取到字串結束。
例:

std::string str="We must keep out mind in study";
std::string str2 = str.substr (3,4);  // "must"
std::string str3 = str.substr (pos);  // from "must" to the end
std::cout << str2 << ' ' << str3 << '\n';

注意它的返回值是string型別,如果要賦給char []型別需要轉換。

2 拷貝
strcpy()
memcpy()

三、型別轉換
1 整型數轉為字串:char *itoa(int value, char *str, int radix)
itoa為interger to array的簡稱,value為整型,str為轉換後的字串,radix為進位制數。

2 字串轉為整型數:int atoi(const char *nptr)
nptr為要轉化你的字串,返回值是轉換後的整型。

3 字元轉為整數
char a = ‘9’;
int k = a - ‘0’;

4 整數轉為字元
int i = 5;
char ch = i + ‘0’;

相關推薦

C++C字串操作總結

一 c語言的字串 c語言中沒有字串這個資料型別,用兩種方法來表示字串,第一種是字元陣列char s[],第二種是字元指標char *s, 兩者有區別,不能任務是一樣的,區別如下(不完整,後期再慢慢補充) 1 初始化和賦值 char[]字串賦值c語言中可以用

C語言字串操作總結大全(超詳細) (轉)

轉自部落格園:DoubleLi 1)字串操作 strcpy(p, p1) 複製字串  strncpy(p, p1, n) 複製指定長度字串  strcat(p, p1) 附加字串  strncat(p, p1, n) 附加指定長度字串 

C語言(C++)字串操作總結

1)字串讀入 第一種方式: scanf("%s",str); 這種方式,是直接用 scanf,這樣讀字串的話,是從第一個字元讀起,然後讀至 空格、製表符、換行符 停止,是最簡單的方法,也比較常用。   第二種方式: gets(str); 這種讀入方法,是會吃

fwrite fread fscanf fprintf 及C語言字串操作函式

fwrite fread fscanf fprintf 都是屬於C函式用於檔案讀寫,前兩者對二進位制檔案讀寫,後兩者只要用於格式化的讀取、輸出文字,對文字檔案讀寫。  fscanf()  格式化的讀取,從檔案中讀取  fprintf() 格式化的寫入,寫入到檔案中

C語言字串操作總結大全(超詳細)

1)字串操作 strcpy(p, p1) 複製字串 strncpy(p, p1, n) 複製指定長度字串 strcat(p, p1) 附加字串 strncat(p, p1, n) 附加指定長度字串 strlen(p) 取字串長度 strc

C/C++語言字串操作總結

一、字串操作 1)字串操作 strcpy(p, p1) 複製字串 strncpy(p, p1, n) 複製指定長度字串 strcat(p, p1) 附加字串 strncat(p, p1, n) 附加指定長度字串 strlen(p) 取字串長度 s

C語言字串操作總結大全

1)字串操作 strcpy(p, p1) 複製字串 strncpy(p, p1, n) 複製指定長度字串 strcat(p, p1) 附加字串 strncat(p, p1, n) 附加指定長度字串 strlen(p) 取字串長度 strcmp(p, p1) 比較字

C/C++語言字串操作總結大全(超詳細)

字串操作 strcpy(p, p1) 複製字串 strncpy(p, p1, n) 複製指定長度字串 strcat(p, p1) 附加字串 strncat(p, p1, n) 附加指定長度字串 strlen(p) 取字串長度 strcmp(p, p1) 比較字

C語言--字串操作總結

一、字串操作 1、原型:strcpy(char destination[], const char source[]); 功能:將字串source拷貝到字串destination中  例程:    #include <iostream.h>  #include

C-C++語言字串操作總結大全

1)字串操作 strcpy(p, p1) 複製字串 strncpy(p, p1, n) 複製指定長度字串 strcat(p, p1) 附加字串 strncat(p, p1, n) 附加指定長度字串 strlen(p) 取字串長度 strcmp(p, p1) 比較字串 strc

2014年8月25日,收藏家殺手——面向象的C++C(一)

creat os x tracking -m end gin 知識 數據 我們 近期事情特別多,睡眠也都非常晚,有點精神和身體混亂的感覺,所以想寫寫技術分析文章。讓兩者的我都調整一下。這篇技術分析文章是一直想寫的,當前僅僅是開篇,有感覺的時候就寫寫,屬於拼湊而成,興

[轉]C語言字符串操作總結大全(超詳細)

轉換 c_str per blog 靜態 母版 們的 set 預留空間 1)字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定長度字

C語言中字串的操

最近對於C語言接收到的資料(字串)處理比較多。 字串:零個或多個字元組成的有限序列。假設:S="abcd1234efghmn",其中S是串列埠,字串中的字元可以是字元、數字或其他字元。 #include <string.h> #include <stdio.h>

CC++字串處理整理

標籤: c c++ 在刷leetcode題目的過程中,發現自己對於c和c++字串的處理並不是很拿手,處理起來比較費勁,而且,演算法題似乎很中意字串的處理,有很多題目都涉及到它。字串處理比較基礎,但是很重要,因此,整理和深入學習字串的處理對於後續的學習來說擁有巨大的作用。 首先,看C語言環境下

分別使用CC++判斷字串迴文

迴文串:字串字元從前往後與從後往前一致(中心對稱) C語言判斷迴文串: #include <stdio.h> #include <string.h> int main() { char a[105]; int i,l; whil

C C++ 字符串函數操作

沒有 插入 app sig 根據 const pen 其中 append 1)字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定長

C語言中的字串操作

puts(str)函式,直接輸出字串char str[]; gets(str)函式,從鍵盤輸入str[],結束有’\0’; strcat(str1,str2)函式,STRing CATanate字串連線,連線兩個字元陣列的字串,str2中的字串連線在str1後; 1 strcpy(str1,str2)函

linux C 中常用的字串操作函式

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSi

C語言 重寫C語言庫strchr字串操作函式

#include<stdio.h> #include<string.h> const char *my_strchr(char const *str,int ch) { int i=0; for(;str[i]!='\0';i++

C C++ 的標準庫分別有自己的 locale 操作方法,C 標準庫的 locale 設定函式是 setlocale(),而 C++ 標準庫有 locale 類流物件的 imbue() 方法(gcc使用zh_CN.GBK,或者zh_CN.UTF-8,VC++使用Chinese_People&#

轉自:http://zyxhome.org/wp/cc-prog-lang/c-stdlib-setlocale-usage-note/  [在此向原文作者說聲謝謝!若有讀者看到文章轉載時請寫該轉載地址,不要寫我的BLOG地址。尊重他人的勞動成果 ^_^ ] C 和 C++ 的標準庫分別有自己的