C++ cin輸入的多種方法詳解
前言
在C++中一般使用
cin
來進行交互,獲取用戶輸入信息。cin是C++編程語言中的標準輸入流對象
,即stream類
的對象。cin主要用于從標準輸入讀取數(shù)據(jù),這里的標準輸入,指的是終端的鍵盤。主要用到有cin >>
、cin.get()
、cin.getline()
。cin讀取數(shù)據(jù)也是從緩沖區(qū)
中獲取數(shù)據(jù),緩沖區(qū)為空時,cin的成員函數(shù)會阻塞等待數(shù)據(jù)
的到來,一旦緩沖區(qū)中有數(shù)據(jù),就觸發(fā)cin的成員函數(shù)去讀取數(shù)據(jù)
。
一、cin
1、cin >>
支持
連續(xù)
讀取,以Tab、空格
為分隔符,換行符
為結束符號;
/*---------------------------------------------------------------------- > File Name: cinDemo01.cpp > Author: Jxiepc > Mail: Jxiepc > Created Time: Mon 20 Sep 2021 10:09:55 AM CST ----------------------------------------------------------------------*/ #include<iostream> #include<unistd.h> #include<cstring> int main(int argc, char *argv[]){ std::string s; while(std::cin >> s){ std::cout << s << std::endl; } return 0; }
當
cin>>
從緩存區(qū)讀取數(shù)據(jù)時,會自動忽略作為第一個字符存在的Tab、空格(Space)、換行
,繼續(xù)讀取下一個字符,若緩存區(qū)為空
,則等待
。但是如果讀取成功
,字符后面的分隔符是殘留在緩沖區(qū)
的,cin>>不做處理。
2、cin.get()
讀取
字符
,包含空格
;
/*---------------------------------------------------------------------- > File Name: cinGetDemo.cpp > Author: Jxiepc > Mail: Jxiepc > Created Time: Mon 20 Sep 2021 10:20:59 AM CST ----------------------------------------------------------------------*/ #include<iostream> #include<unistd.h> #include<cstring> #include<fstream> void test02(){ char str[256]; std::cout << "Enter the name of an existing text file: "; std::cin.get (str,256); // get c-string std::ifstream is(str); // open file char c; while (is.get(c)) // loop getting single characters std::cout << c; is.close(); // close file } void test01(){ char a,b; a = std::cin.get(); std::cout << "a:" << a <<std::endl; std::cin.get(b); std::cout << "b:" << b << std::endl; } int main(int argc, char *argv[]){ std::cout << "測試字符..." << std::endl; test01(); std::cout << "--------------------------------------" << std::endl; //sleep(1); //std::cout << "測試get讀取文件" << std::endl; //test02(); return 0; }
2.1 函數(shù)介紹
int get(); istream& get(char&c); /* * @func:- 單個字符; * - 不會忽略分隔符; * - 成功讀取的時候則返回字符的ASCII碼值,遇到文件結束符時則返回EOF(-1); */ istream& get (char* s, streamsize n); istream& get (char* s, streamsize n, char delim); /* * @func: - 從在流提取C-串,直到(n-1)字符已被提取或定界字符結束。('\n')或DELIM(自定義)。 * - 若找到定界符則不會從輸入序列中提取,并保留作為從流中提取的下一個字符。 * - 如果n大于0,即使提取的是空字符串,也會自動添加一個空字符('\0')到寫入序列。 * @param s:接收字符串; * @param n:- 寫入s的最大字符數(shù)(包括終止空字符); * - 若小于2,則函數(shù)不提取任何字符并設置failbit; * - Streamsize是一種帶符號的整型。 * @param delim:自定義結束符。 */ istream& get(streambuf&sb); istream& get (streambuf& sb, char delim); /* * @func:- 從流中提取字符,并將其插入到輸出序列流緩沖區(qū)對象控制的某人,('\n')或DELIM(自定義)。 * - 只有成功插入的字符才會從流中提取。分隔字符,還是最終未能插入的字符,保留在那里作為下一個要從流中提取的字符。 */
3、getline()
從標準輸入設備讀取一串字符串,并以指定的結束符結束。
/*---------------------------------------------------------------------- > File Name: cinGetlineDemo.cpp > Author: Jxiepc > Mail: Jxiepc > Created Time: Mon 20 Sep 2021 11:08:17 AM CST ----------------------------------------------------------------------*/ #include<iostream> #include<unistd.h> #include<cstring> void test01(){ char name[200]; std::cout << "請輸入:" ; std::cin.getline(name, 200); std::cout << name << std::endl; } int main(int argc, char *argv[]){ test01(); return 0; }
函數(shù)介紹
istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim ); /* * @func:- 從流中提取字符作為未格式化的輸入,并將它們以c字符串的形式存儲到s中,直到提取的字符成為分隔符,或者有n個字符被寫入s中(包括結束的空字符); * - 如果到達文件結束符,該函數(shù)也將停止提取字符; * - 若n大于0,提取到空串,也會自動添加一個空字符('\0')到寫入序列。 * @param s:指向字符數(shù)組的指針,在該數(shù)組中提取的字符存儲為c字符串; * @param n:寫入s的最大字符數(shù)(包括終止空字符); * @param delim:結束符; */
到此這篇關于C++ cin輸入的幾種方式的文章就介紹到這了,更多相關C++ cin輸入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Visual C++程序設計中Windows GDI貼圖閃爍的解決方法
這篇文章主要介紹了Visual C++程序設計中Windows GDI貼圖閃爍的解決方法,分析了GDI貼圖閃爍的常見原因及其具體解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-01-01