C/C++如何整行讀入字符串?


 

方法一:scanf()讀入char[]

使用方法:

char str[1024];
scanf("%[^\n]",&str);
getchar();

說明:在scanf函數中,可以使用%c來讀取一個字符,使用%s讀取一個字符串, 但是讀取字符串時不忽略空格,讀字符串時忽略開始的空格,並且讀到空格為止,因此只能讀取一個單詞,而不是整行字符串。

  其實scanf函數也可完成這樣的功能,而且還更強大。這里主要介紹一個參數,%[ ],這個參數的意義是讀入一個字符集合。[ ]是個集合的標志,因此%[ ]特指讀入此集合所限定的那些字符,比如%[A-Z]是輸入大寫字母,一旦遇到不在此集合的字符便停止。如果集合的第一個字符是"^",這說明讀取不在"^"后面集合的字符,既遇到"^"后面集合的字符便停止。注意此時讀入的字符串是可以含有空格的,而且會把開頭的空格也讀進來。

  注意:如果要循環的多次從屏幕上讀取一行的話,就要在讀取一行后,在用%c讀取一個字符,將輸入緩沖區中的換行符給讀出來。否則的話,在下一次讀取一行的時候,第一個就遇到'\n',匹配不成功就直接返回了。這里可以用scanf()或者getchar()函數讀取換行符。

方法二:getchar()讀入char[]

使用方法:

char str[1024];
int i=0;
while((str[i]=getchar())!='\n')
    i++;
getchar();

說明:這樣一個一個讀也可以,也會把開頭的空格讀進來。最后也需要考慮換行符,使用getchar()讀出來。

方法三:gets()讀入char[]

使用方法:

char str[1024];
gets(str);

說明:感覺這個就是多個getchar的集合函數,很好用。功能是從標准輸入鍵盤上讀入一個完整的行(從標准輸入讀,一直讀到遇到換行符),把讀到的內容存入括號中指定的字符數組里,並用空字符'\0'取代行尾的換行符'\n'。讀入時不需要考慮換行符。

方法四:getline()讀入string或char[]

使用方法:

string str;
getline(cin,str);//讀入string

char str2[1024];
cin.getline(str2,1024);//讀入char數組

說明:這是比較常用的方法,cin.getline第三個參數表示間隔符,默認為換行符'\n'。讀入不需要考慮最后的換行符。

方法五:get()讀入char[]

使用方法:

char str3[1024];
cin.get(str3,1024);//讀入char數組

說明:get函數讀入時需要考慮最后的換行符,也就是說,如果用get讀入多行數據,要把'\n'另外讀出來,一般使用cin.get(str,1024).get();來讀入多組數據。

 

作者: AlvinZH

出處: http://www.cnblogs.com/AlvinZH/

本文版權歸作者AlvinZH和博客園所有,歡迎轉載和商用,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM