cin.get()
成都創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為汾陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),汾陽網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
用法1: cin.get(字符變量名)可以用來接收字符
#include iostream
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
coutchendl;
}
輸入:jljkljkl
輸出:j
用法2:cin.get(字符數(shù)組名,接收字符數(shù)目)用來接收一行字符串,可以接收空格
#include iostream
using namespace std;
main ()
{
char a[20];
cin.get(a,20);
coutaendl;
}
輸入:jkl jkl jkl
輸出:jkl jkl jkl
輸入:abcdeabcdeabcdeabcdeabcde (輸入25個(gè)字符)
輸出:abcdeabcdeabcdeabcd (接收19個(gè)字符+1個(gè)'\0')
用法3:cin.get(無參數(shù))沒有參數(shù)主要是用于舍棄輸入流中的不需要的字符,或者舍棄回車,彌補(bǔ)cin.get(字符數(shù)組名,接收字符數(shù)目)的不足.
cin.peek() 其返回值是一個(gè)char型的字符,其返回值是指針指向的當(dāng)前字符,但它只是觀測,指針仍停留在當(dāng)前位置,并不后移。如果要訪問的字符是文件結(jié)束符,則函數(shù)值是EOF(-1)。
其功能是從輸入流中讀取一個(gè)字符 但該字符并未從輸入流中刪除
若把輸入流比作一個(gè) 棧類 那么這里的peek函數(shù)就相當(dāng)于棧的成員函數(shù)front 而如果cin.get()則相當(dāng)于棧的成員函數(shù)pop。
下面這段代碼能幫助您更清晰地理解peek函數(shù)
/ istream peek
#include iostream
using namespace std;
int main () {
char c;
int n;
char str[256];
cout "Enter a number or a word: ";
c=cin.peek();
if ( (c = '0') (c = '9') )
{
cin n;
cout "You have entered number " n endl;
}
else
{
cin str;
cout " You have entered word " str endl;
}
return 0;
}
void pokeb(int segment,int offset,int value) 將字節(jié)value寫到segment:offset處
int peek(int segment,unsigned offset) 函數(shù)返回segment:offset處的一個(gè)字
是對(duì)內(nèi)存和域的操作
C++中的peek函數(shù)
該調(diào)用形式為cin.peek() 其返回值是一個(gè)char型的字符,其返回值是指針指向的當(dāng)前字符,但它只是觀測,指針仍停留在當(dāng)前位置,并不后移。如果要訪問的字符是文件結(jié)束符,則函數(shù)值是EOF(-1)。
其功能是從輸入流中讀取一個(gè)字符 但該字符并未從輸入流中刪除若把輸入流比作一個(gè) 棧類 那么這里的peek函數(shù)就相當(dāng)于棧的成員函數(shù)front 而如果cin.get()則相當(dāng)于棧的成員函數(shù)pop。
下面這段代碼能更清晰地理解peek函數(shù)
[cpp] view plaincopy
/* istream peek */
#include iostream
using namespace std;
int main ()
{
char c;
int n;
char str[256];
cout "Enter a number or a word: ";
c=cin.peek();
if ( (c = '0') (c = '9') )
{
cin n;
cout "You have entered number " n endl;
}
else
{
cin str;
cout " You have entered word " str endl;
}
return 0;
}
C中的peek函數(shù)(自己寫的)
[cpp] view plaincopy
char peek_char;
static char peek()
{
return peek_char;
}
static void * __Peek_loop_func(void *pInputArg)
{
char tmp_char;
while(1)
{
if(tmp_char=getchar())
{
if((tmp_char!='\r')(tmp_char!='\n')(tmp_char!=0x0a))
{
peek_char=tmp_char;
printf("Input Char === [%c] \n",peek_char);
if(peek_char=='q')
{
printf("Jmp out from serial == 2 \n");
exit(1);
}
}
}
usleep(1000*10);
}
}
// 下面的代碼放在主程序中,用來創(chuàng)建檢測輸入的線程.
pthread_t tPeekThreadHandle;
pthread_create(tPeekThreadHandle, NULL, __Peek_loop_func, NULL);
原理就是創(chuàng)建一個(gè)新線程,來接收串口的輸入,如果輸入的第一字符為‘q’ 則退出程序,其實(shí)在退出的時(shí)候,我們也可以再捕獲一下。
fin.peek() 每次讀一個(gè)元素進(jìn)來
讀回的不是EOF,則存在讀緩沖器里
rdbuf()-sgetc()
while( fin.peek()!=EOF ) {
如果temp.txt有4行,第4行有新行符號(hào)沒別的東西,
則循環(huán)4次,遇到 EOF 退出
第4次 讀緩沖器里的內(nèi)容是第三次讀入的
所以 多一個(gè) cc
eof 是文件結(jié)束符號(hào), 編碼是 ffff
temp.txt
aa
bb
ccEOF
--------------
與
aa
bb
cc
EOF
----------
前者3行,后者4行
改為:
while( fin.peek()!=EOF ) {
ch[0] = '\0';
fin ch;
cout ch;
}
就好了。
新聞標(biāo)題:c語言peek函數(shù) c語言beep函數(shù)含義
文章轉(zhuǎn)載:http://www.rwnh.cn/article20/ddoodco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站收錄、云服務(wù)器、外貿(mào)建站、小程序開發(fā)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)