C++ 實現(xiàn)輸入含空格的字符串
1、scanf函數(shù)(包含頭文件#include <stdio.h>)
scanf函數(shù)一般格式為scanf(“%s”,st),但scanf默認(rèn)回車和空格是輸入不同組之間的間隔和結(jié)束符號,所以輸入帶空格,tab或者回車的字符串是不可以的。
解決方法如下:
1. 利用格式符“%[]”它的作用為掃描字符集合。
Scanf(“%[^c]”,str); 其中“c”是一個具體的字符常量(包括控制字符)。
當(dāng)輸入字符串時,字符“c”將被當(dāng)作當(dāng)前輸入的結(jié)束符。
利用此格式符就可以由編程者自己指定一個輸入結(jié)束符。
例如:
scanf("%[a-z A-Z0-9]",str)表示只匹配輸入是大小寫字母和數(shù)字,遇到非數(shù)字和字母時輸入結(jié)束。
例如:
int main()
{
char st[50];
scanf("%[^\n]",st);// \n作為字符串輸入的結(jié)束符
printf("%s",st);
return 0;
}
2. cin(包含頭文件#include <iostream>)
cin是C++中最常用的輸入語句,當(dāng)遇到空格或者回車鍵即停止。無法解決。
3. gets()
可以無限讀取,以回車結(jié)束讀取,C語言中的函數(shù),在C++中運行會產(chǎn)生bug。在C11標(biāo)準(zhǔn)中已被正式刪除,建議不要用?。?!
4. getline()(包含頭文件#include <string>)
若定義變量為string類型,注意不是字符型數(shù)組。則要考慮getline()函數(shù)。
用法如下:
int main()
{
string st;
getline(cin,st);
cout<<st<<endl;
return0;
}
5.cin.get (char *str, int maxnum)
cin.get()函數(shù)可以接收空格,遇回車結(jié)束輸入。
int main()
{
char st[50];
cin.get(st,50);
cout<<a<<endl;// 輸出也可以用printf("%s",st);
return0;
}
6.cin.getline (char *str, int maxnum)(包含頭文件#include <string>)
cin.getline()函數(shù)可以同cin.get()函數(shù)類似,也可接收空格,遇回車結(jié)束輸入。
int main()
{
char st[50];
cin.getline(a,50);
cout<<a<<endl; // 輸出也可以用printf("%s",st);
return0;
}
7. 字符串類型轉(zhuǎn)換為字符數(shù)組
(a)c_str()
char p[50];
string str="I Love Ningbo!";
strcpy(p,str.c_str());
printf("%s",p);
(b)data()
char p[50];
string str="I Love Ningbo!";
strcpy(p,str.data());
printf("%s",p);
補(bǔ)充知識:c++ cin輸入空格
直接添加一行代碼:
cin >> noskipws;
實例:
#include<iostream>
using namespace std;
int main()
{
cin >> noskipws;//設(shè)置cin讀取空白符;
char c;
size_t acount =0, ecount =0, icount =0, ocount =0, ucount = 0,scount = 0;
while (cin >> c)
{
if (c == 'a')++acount;
if (c == 'e')++ecount;
if (c == 'i')++icount;
if (c == 'o')++ocount;
if (c == 'u')++ucount;
if (c == ' ')++scount;
}
cout << "a: " << acount << endl;
cout << "e: " << ecount << endl;
cout << "i: " << icount << endl;
cout << "o: " << ocount << endl;
cout << "u: " << ucount << endl;
cout << "space: " << scount << endl;
return 0;
}
***運行結(jié)果:***

以上這篇C++ 實現(xiàn)輸入含空格的字符串就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解C++類的成員函數(shù)做友元產(chǎn)生的循環(huán)依賴問題
這篇文章主要為大家詳細(xì)介紹了C++類的成員函數(shù)做友元產(chǎn)生的循環(huán)依賴問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
VSCode (Visual Studio Code) V1.43.0下載并設(shè)置成中文語言的方法
Visual Studio Code是一款免費開源的現(xiàn)代化輕量級代碼編輯器,支持語法高亮、智能代碼補(bǔ)全、自定義熱鍵、括號匹配、代碼片段、代碼對比 Diff、GIT 等特性,這篇文章主要介紹了VSCode (Visual Studio Code) V1.43.0下載并設(shè)置成中文語言,需要的朋友可以參考下2020-03-03
C語言實現(xiàn)在windows服務(wù)中新建進(jìn)程的方法
這篇文章主要介紹了C語言實現(xiàn)在windows服務(wù)中新建進(jìn)程的方法,涉及C語言進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06

