一.競賽代碼要求main()函數(shù)前面必須有返回值int,結(jié)尾必須有return 0;否則代碼0分!
cin cout輸入輸出較簡潔,缺點是效率低
cin接受一個字符串,遇“空格”、“TAB”、“回車”都結(jié)束
--------------------------------------------------------------------------------------------------------------------------------------------------------
二.scanf() #include <cstdio>//c語言中的<stdio.h>就是c++語言中的<cstdio>
我們從鍵盤上讀取的信息都是字符類型(char),而將它們轉(zhuǎn)換成int類型或者double類型,就是scanf()函數(shù)的工作
scanf()函數(shù)使用規(guī)則:
如果用scanf()讀入基本變量類型的值,在變量名前加一個&
如果用scanf()把字符串讀入字符數(shù)組中,不要使用&(其中&為取地址符,故名思意就是用來取變量的存儲地址)
eg1 例如scanf("%d%d",&n,&m);
eg2 例如scanf("%d,%d",&n,&m); scanf()函數(shù)將其解釋成:用戶將輸入一個數(shù)字、一個逗號,然后再輸入一個數(shù)字。也就是說用戶必須像下面這樣輸入兩個整數(shù):88,121
如果一個字符串中包含空格,那scanf()是只能讀取空格之前的字符,例如“hello world”,scanf("%s",str);只能讀取到hello。解決這個問題的方法是使用gets。
--------------------------------------------------------------------------------------------------------------------------------------------------------
三.gets() #include<string>
gets可以接收空格,而scanf遇到空格、回車和Tab鍵都會認為輸入結(jié)束,所以它不能接收空格。
用法:gets(字符數(shù)組名或指針);
char a[15];
gets(a); /*遇到回車認為輸入結(jié)束*/
scanf("%s",a); /*遇到空格、回車、Tab鍵認為輸入結(jié)束*/
scanf不能接受空格、制表符Tab、回車等;對末尾回車符的處理:把回車符保留在緩存中。
gets能夠接受空格、制表符Tab、回車等;對末尾回車符的處理:接收回車,但把回車替換為\0.
$ gets()和scanf()相同點:字符串接受結(jié)束后自動加'\0'。
$ gets()和scanf()不同點:scanf() :當遇到回車,空格和tab鍵會自動在字符串后面添加'\0',但是回車,空格和tab鍵仍會留在輸入的緩沖區(qū)中。
gets():可接受回車鍵之前輸入的所有字符,并用'\0'替代'\n' .回車鍵不會留在輸入緩沖區(qū)中
scanf()可以讀取所有類型的變量
gets()用到讀取字符串,用回車結(jié)束輸入
1例1:2#include<cstdio>3intmain(){4charch1[10],ch2[10];5scanf("%s",ch1);6gets(ch2);7return0;8}9依次鍵入asd空格fg回車,asd空格fg回車,則ch1="asd\0",ch2="asd fg\0"。10例2:11#include 12intmain(){13charch1[10],ch2[10],c1,c2;14scanf("%s",ch1);15c1=getchar();16gets(ch2);17c2=getchar();18}19依次鍵入asdfg回車,asdfg回車,則ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需輸入。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
四.getline() #include <string>
istream& getline ( istream &is , string &str , char delim )
其中,istream&is表示一個輸入流,譬如cin;
string&str表示把從輸入流讀入的字符串存放在這個字符串中(可以自己隨便命名,str什么的都可以);
char delim表示遇到這個字符停止讀入,在不設(shè)置的情況下系統(tǒng)默認該字符為'\n',也就是回車換行符(遇到回車停止讀入)。
eg1: getline(cin,line,'#');
那么當我輸入"You are the #best!" 的時候,輸入流實際上只讀入了"You are the ",#后面的并沒有存放到line中(應(yīng)該是在緩沖區(qū)里吧)。
eg2: while(getline(cin,line))語句 注意這里默認回車符停止讀入,鍵入Ctrl+Z按回車即可退出循環(huán)。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
五.cin.getline() #include<iostream>
此函數(shù)會一次讀取多個字符(包括空白字符)可以接受空格 它以指定的地址為存放第一個讀取的字符的位置,依次向后存放讀取的字符,直到讀滿N-1個,或者遇到指定的結(jié)束符為止。
若不指定結(jié)束符,則默認結(jié)束符為'\n'。
其語法為: cin.getline(字符指針(char*),字符個數(shù)N(int),結(jié)束符(char));
1eg1:cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk2eg2:3#include<iostream>4usingnamespacestd;5intmain(){6chara[30];7cout<<"請輸入一個字符串:"<
-----------------------------------------------------------------------------------------------------------------------------------------------------------
六.cin.get()
1用法1:cin.get(字符變量名)可以用來接收字符2#include<iostream>3usingnamespacestd;4intmain(){5charch;6ch=cin.get();//或者cin.get(ch);7cout<
--------------------------------------------------------------------------------------------------------------------------------------------------------------
七.getchar() //接受一個字符,需包含#include<cstdio>
getchar()是C語言的函數(shù),C++也可以兼容,但是盡量不用或少用;
getchar()的返回值是用戶輸入的字符的ASCⅡ碼,如出錯返回-1
1#include<cstdio>2usingnamespacestd;3intmain(){4charch;5ch=getchar();//不能寫成getchar(ch);6cout<
看我主頁簡介免費C++學習資源,視頻教程、職業(yè)規(guī)劃、面試詳解、學習路線、開發(fā)工具
每晚8點直播講解C++編程技術(shù)。非常感謝大家的關(guān)注,讓小編更有動力寫文。比心。