zoukankan      html  css  js  c++  java
  • 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!='
    ')&&(tmp_char!='
    ')&&(tmp_char!=0x0a))
    16             {
    17                 peek_char=tmp_char;
    18                 printf("Input Char === [%c] 
    ",peek_char);    
    19 
    20                 if(peek_char=='q')
    21                 {
    22                     printf("Jmp out from serial == 2 
    ");
    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’ 则退出程序,其实在退出的时候,我们也可以再捕获一下。

  • 相关阅读:
    残疾流浪歌手的令人陶醉的声音
    关于浏览器参数的获取
    项目开发文档模板
    scoped_ptr源码
    从逗号分隔的字符串中删除某个子串的js函数
    合并两个数组的js函数
    comutil.h移值(_com_error,_bstr_t,_variant_t类的移值)
    判断两个对象是否相等的js函数
    托管可执行文件的结构(The Structure of a Managed Executable File)
    访问cookie的js函数
  • 原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/7351846.html
Copyright © 2011-2022 走看看