cin.get()
成都創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為汾陽企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計,汾陽網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(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個字符)
輸出:abcdeabcdeabcdeabcd (接收19個字符+1個'\0')
用法3:cin.get(無參數(shù))沒有參數(shù)主要是用于舍棄輸入流中的不需要的字符,或者舍棄回車,彌補cin.get(字符數(shù)組名,接收字符數(shù)目)的不足.
cin.peek() 其返回值是一個char型的字符,其返回值是指針指向的當(dāng)前字符,但它只是觀測,指針仍停留在當(dāng)前位置,并不后移。如果要訪問的字符是文件結(jié)束符,則函數(shù)值是EOF(-1)。
其功能是從輸入流中讀取一個字符 但該字符并未從輸入流中刪除
若把輸入流比作一個 棧類 那么這里的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處的一個字
是對內(nèi)存和域的操作
C++中的peek函數(shù)
該調(diào)用形式為cin.peek() 其返回值是一個char型的字符,其返回值是指針指向的當(dāng)前字符,但它只是觀測,指針仍停留在當(dāng)前位置,并不后移。如果要訪問的字符是文件結(jié)束符,則函數(shù)值是EOF(-1)。
其功能是從輸入流中讀取一個字符 但該字符并未從輸入流中刪除若把輸入流比作一個 棧類 那么這里的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)建一個新線程,來接收串口的輸入,如果輸入的第一字符為‘q’ 則退出程序,其實在退出的時候,我們也可以再捕獲一下。
fin.peek() 每次讀一個元素進來
讀回的不是EOF,則存在讀緩沖器里
rdbuf()-sgetc()
while( fin.peek()!=EOF ) {
如果temp.txt有4行,第4行有新行符號沒別的東西,
則循環(huán)4次,遇到 EOF 退出
第4次 讀緩沖器里的內(nèi)容是第三次讀入的
所以 多一個 cc
eof 是文件結(jié)束符號, 編碼是 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://jinyejixie.com/article20/ddoodco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站收錄、云服務(wù)器、外貿(mào)建站、小程序開發(fā)、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)