字串輸入 操作

2021-07-25 13:50:15 字數 1543 閱讀 6043

字串:

用引號括起來的字串隱式地包括結尾的空字元(\0),如char ch=」bubble」;

c++輸入工具通過鍵盤輸入,將字串讀入到char陣列時,自動加上結尾的空字元。

strlen()返回的是儲存在陣列中的字串的長度(只計算可見的字元,不把空字元計算在內),sizeof()運算子指出整個陣列的長度。

字串的輸入:

cin使用空白(空格,製表符,換行符)來確定字串的結束位置。

cin.getline(),第乙個引數是用來儲存輸入的陣列的名稱,第二個引數是要讀取的字元個數,第三個為讀取結束符。函式getline()是istream類的乙個類方法(cin是乙個istream物件)

getline(cin,str)中getline()不是類方法將cin作為引數指出去**查詢輸入,不需要指出字串長度。

cin.get()不讀取換行符,並將其留在輸入佇列中

cin.get(firstline,size)//read first line

cin.get()    //read newline

cin.get(secondline,size)//read second line

get與getline均返回乙個cin物件

string類操作:

可以使用運算子+將兩個物件合併起來,還可以使用運算子+=將字串附加到string物件的末尾。str3=str1+str2;str1+=str2;

使用strcpy將字串複製到字元陣列中,使用strcat將字串附加到字元陣列末尾:

strcpy(charr1,charr2)//copy charr2 to charr1  將字串複製到字元陣列中

fgets():從檔案結構體指標stream中讀取資料,每次讀取一行。讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize-1個字元(第bufsize個字元賦'\0'),如果檔案中的該行,不足bufsize個字元,則讀完該行就結束。如若該行(包括最後乙個換行符)的字元數超過bufsize-1,則fgets只返回乙個不完整的行,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。函式成功將返回buf,失敗或讀到檔案結尾返回null。因此我們不能直接通過fgets的返回值來判斷函式是否是出錯而終止的,應該借助feof函式或者ferror函式來判斷。

函式原型:char *fgets(char *buf, int bufsize, file *stream);

引數:*buf: 字元型指標,指向用來儲存所得資料的位址。bufsize: 整型資料,指明儲存資料的大小。*stream: 檔案結構體指標,將要讀取的檔案流。

sscanf() - 從乙個字串中讀進與指定格式相符的資料。

函式原型:int sscanf( const char *, const char *, ...); int sscanf(const char *buffer,const char *format,[argument ]...);

buffer儲存的資料 ,format格式控制字串,argument 選擇性設定字串,sscanf會從buffer裡讀進資料,依照format的格式將資料寫入到argument裡。

C 字串輸入操作

問題1 輸入為一行字串被中間被一些空格隔開,要求提取這些被空格隔開的字串.方法 直接使用cin,因為cin遇到空格附,換行附,0,eof等會停止輸入 string s while cin s 上述 中,必須要使用getchar 獲取終結符,才能順利輸入字串,再看下面 string a cin n w...

字串輸入

之前在學習input的時候,通過它能夠完成從鍵盤獲取資料,然後儲存到指定的變數中 注意 input獲取的資料,都以字串的方式進行儲存,即使輸入的是數字,那麼也是以字串方式儲存 demo username input 請輸入使用者名稱 print 使用者名為 s username password i...

無冗餘輸入字串 字串陣列 字串

問題 無冗餘 輸入乙個字串 分析 無冗餘 是指儲存的空間不能有冗餘的,比如,要存的陣列長度是10 加上 0 是11 不可以定義陣列為char str 20 這樣還會有8個位元組 還是9個位元組?的空間沒被用,就算是冗餘,因此不能事先分配乙個足夠大的空間,也就不好用陣列實現,然後應該用指標實現 參考的...