字串讀入的總結

2022-09-15 08:57:08 字數 1997 閱讀 8828

字串的輸入的主流函式:

一、scanf();  二、cin;  三、gets();  四、getline();  五、sscanf()。

一、scanf("%s",str);

遇見空格或換行就停止。

#include

int main()

return 0;

}輸入:123 456

輸出:123

二、cin>>str;與scanf();

相似遇見空格或換行就停止;以檔案結束。

三、gets(str);

gets(str)函式與scanf("%s",&str)相似,但不完全相同,使用scanf("%s",&s) 函式輸入字串時存在乙個問題,

就是如果輸入了空格會認為字串結束,空格後的字元將作為下乙個輸入項處理,但gets()函式將接收輸入的整個字串直到遇到換行為止或檔案結束。

四、getline(cin,str);

需要加標頭檔案#include;而且str 必須是 string型別;

讀入一行以檔案或換行結束。

五、sscanf();

1、sscanf與scanf類似,都是用於輸入的,只是後者以鍵盤(stdin)為輸入源,前者以固定字串為輸入源。

2、 %[a-z] 表示匹配a到z中任意字元,貪婪性(盡可能多的匹配)

%[ab'] 匹配a、b、'中一員,貪婪性

%[^a] 匹配非a的任意字元,貪婪性

3、用法例子

a. 常見用法。

char buf[512] ;

sscanf("123456 ", "%s", buf);//此處buf是陣列名,它的意思是將123456以%s的形式存入buf中!

printf("%s\n", buf);

結果為:123456

b. 取指定長度的字串。如在下例中,取最大長度為4位元組的字串。

sscanf("123456 ", "%4s", buf);

printf("%s\n", buf);

結果為:1234

c. 取到指定字元為止的字串。如在下例中,取遇到空格為止字串。

sscanf("123456 abcdedf", "%[^ ]", buf);

printf("%s\n", buf);

結果為:123456

d. 取僅包含指定字符集的字串。如在下例中,取僅包含1到9和小寫字母的字串。

sscanf("123456abcdedfbcdef", "%[1-9a-z]", buf);

printf("%s\n", buf);

結果為:123456abcdedf

當輸入:

sscanf("123456abcdedfbcdef","%[1-9a-z]",buf);

printf("%s\n",buf);

結果為:123456

e. 取到指定字符集為止的字串。如在下例中,取遇到大寫字母為止的字串。

sscanf("123456abcdedfbcdef", "%[^a-z]", buf);

printf("%s\n", buf);

結果為:123456abcdedf

f、給定乙個字串iios/12ddwdff@122,獲取 / 和 @ 之間的字串,先將 "iios/"過濾掉,再將非'@'的一串內容送到buf中

sscanf("iios/12ddwdff@122", "%*[^/]/%[^@]", buf);

printf("%s\n", buf);

結果為:12ddwdff

g、給定乙個字串"hello, world",僅保留world。(注意:","之後有一空格,%s遇空格停止,加*則是忽略第乙個讀到的字串)

sscanf("hello, world", "%*s%s", buf);

printf("%s\n", buf);

結果為:world

%*s表示第乙個匹配到的%s被過濾掉,即hello被過濾了

如果沒有空格則結果為null。

scanf讀入字串與讀入字元的區別

今天下午比賽時候有道題用c 輸入輸出是超時的,所以準備換上c試試,發現幾個小問題 1 使用scanf c a 讀取a a是char型別 如果讀取之前有換行符或者空格,那麼a就會把之前的換行符或者空格讀取到,解決方法就是這之前先getchar 一下。2 而如果用scanf s str 讀取str 我發...

讀入字串的方法

1.讀入string 需包含標頭檔案 iostream iostream中包含string include 方法 1.讀到空格 tab 回車中任意乙個結束 直接cin。string a cin a 2.讀一行 getline。string a getline cin,a 2.相容 可以讀string...

字串 字元陣列讀入 char string

1.scanf printf 不含空格 string a a.resize 10 需要預先分配空間 scanf s a 0 printf s n a.c str 推薦用char陣列讀入再賦值給string 2.getline讀入空格string a getline cin,a cout 3.getc...