C/C++中peek函数的原理及应用详解编程语言

C++中的peek函数

  该调用形式为cin.peek() 其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。

  其功能是从输入流中读取一个字符 但该字符并未从输入流中删除  若把输入流比作一个 栈类 那么这里的peek函数就相当于栈的成员函数front 而如果cin.get()则相当于栈的成员函数pop。

  下面这段代码能帮助您更清晰地理解peek函数

 1 /* istream peek */ 
 2 #include <iostream> 
 3 using namespace std; 
 4 int main ()  
 5 { 
 6     char c; 
 7     int n; 
 8     char str[256]; 
 9     cout << "Enter a number or a word: "; 
10     c=cin.peek(); 
11     if ( (c >= '0') && (c <= '9') ) 
12     { 
13         cin >> n; 
14         cout << "You have entered number " << n << endl; 
15     } 
16     else 
17     { 
18         cin >> str; 
19         cout << " You have entered word " << str << endl; 
20     } 
21     return 0; 
22 }

C中的peek函数(自己写的)

 

 1 char peek_char; 
 2  
 3 static char peek() 
 4 { 
 5     return peek_char; 
 6 } 
 7  
 8 static void * __Peek_loop_func(void *pInputArg) 
 9 { 
10     char tmp_char; 
11     while(1) 
12     { 
13         if(tmp_char=getchar()) 
14         {             
15             if((tmp_char!='/r')&&(tmp_char!='/n')&&(tmp_char!=0x0a)) 
16             { 
17                 peek_char=tmp_char; 
18                 printf("Input Char === [%c] /n",peek_char);     
19  
20                 if(peek_char=='q') 
21                 { 
22                     printf("Jmp out from serial == 2 /n"); 
23                     exit(1); 
24                 } 
25             } 
26         } 
27         usleep(1000*10); 
28     } 
29 } 
30  
31 // 下面的代码放在主程序中,用来创建检测输入的线程. 
32  
33 pthread_t tPeekThreadHandle; 
34 pthread_create(&tPeekThreadHandle, NULL, &__Peek_loop_func, NULL);

 

如何在主程序运行的同时检测串口的输入,比如输入”q”,退出函数。原理就是创建一个新线程,来接收串口的输入,如果输入的第一字符为‘q’ 则退出程序,其实在退出的时候,我们也可以再捕获一下。

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11848.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论