一、字符串輸入輸出函數
1. cin.get()
逐個字符輸入輸出
2. cin
可以將整個字符串一次性輸入,但是,cin將空格、Tab和回車鍵,因此不能用於數組的一次性輸入。
注意:cin和cout 都可以用於字符串整體輸入輸出,無須像cin.get()函數那樣只能逐個字符輸入,但是
cin 不可以輸入空格,而cout可以輸出空格。
3. cin.getline()
接收一個字符串,可以接收空格並輸出,遇到回車鍵結束。
1 #include <iostream>
2
3 using namespace std; 4
5 main () 6
7 { 8
9 char m[20]; 10
11 cin.getline(m,5); 12
13 cout<<m<<endl; 14
15 }
輸入:jkljkljkl
輸出:jklj
注意:接收5個字符到m中,其中最后一個自動添加為'\0',所以只看到4個字符輸出;
如果把5改成20:
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jklf fjlsjf fjsdklf
輸出:jklf fjlsjf fjsdklf
延伸:
1、cin.getline()實際上有三個參數,cin.getline(接收字符串的變量,接收字符個數,結束字符)。
2、當第三個參數省略時,系統默認為'\0'。
3、如果將例子中cin.getline()改為cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk。
4. getline()
接收一個字符串,可以接收空格並輸出,需包含“#include<string>”,遇到回車鍵結束。
#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jkl jfksldfj jklsjfl
輸出:jkl jfksldfj jklsjfl
5. gets_s和puts函數
在新的C++標准中,原來的gets函數現在已經改成了gets_s。
(1)gets_s函數:輸入一個字符串到字符數組中,可以輸入空格和Tab,但是不能輸入回車鍵。輸入完成后,在結尾自動添加空字符。
char str[80];
gets_s(str);
(2)puts_s函數輸出一個字符串,但是不包含空字符,但在新的C++標准中,也能輸出空字符。
char str[80]=”programme”;
puts_s(str);
二、C++字符串中空格,空字符、回車、換行的區別
(1)空格的ASCII碼為32,符號表示為 \40, 賦值語句為:
char a=’ ‘; 或者char a=32;
(2) \0 表示結束符,一般在字符串的最后是結束字符,ASCII碼為0。一般字符串輸出函數遇到空字符就停止輸出。
(3) \r 表示回車符, c++語言編程時(windows系統) 就是return 回到本行行首, 這就會把這一行以前的輸出覆蓋掉
如:
int main()
{
cout << "hahaha" << "\r" << "xixi" ;
}
最后只顯示 xixi 而 hahaha 被覆蓋了
(4) \n 是換行符,c++語言編程時(windows系統),是回車+換行, 把光標先移到行首, 然后換到下一行,也就是下一行的行首。
int main() {
cout << "hahaha" << "\n" << "xixi" ;
}
則 顯示
hahaha
xixi
三. 字符變量賦值和字符串初始化
(1)字符變量賦值用單引號 ‘’或者直接用ASCII碼;
(2)字符串賦值用雙引號
char a[10]=”abcd”;
或者char a[4]={‘a’,’b’,’c’,’d’};
理解記憶:字符變量或者字符串中的元素如a[3],里面存儲的是ASCII值,而不是字符,因為計算機存儲的其實都是數字。單引號‘’表示取引號內的ASCII值。雙引號表示文本。
注:本文有部分內容來自於網上網友的博客,在此向他們表示感謝。