读书人

词法分析器的纯C++具体函数实现

发布时间: 2012-04-16 16:20:04 作者: rapoo

求助:词法分析器的纯C++具体函数实现

在做词法分析器的程序,老师给了C的部分代码,而我没学过c,想知道C++中有哪些函数可以实现同样的功能?
比如: fgetc() 获取文件单个字符,并且能够指针后移, fseek()使指针退回一个字符的位置...
那么相应的用C++输入流怎么实现?我目前尝试了一下做法:
fstream file("D:/main.txt",ios_base::in);
char lookahead =file.get();//读取单个字符,但是不清楚这个函数在循环中能够指针后移吗?
file.putback( lookahead );//退回一个字符,这样用合适吗?
然后判断标识符、关键字、常数有 isalpha isalnum isdigit等函数组合判断,这三个函数对应的c++中的有吗?




[解决办法]
http://www.cplusplus.com/reference/iostream/

什么方法不懂的可以查上面的链接 你的问题都可以在上面得到解决~~
[解决办法]
c++ 的io流 慢死你 完全没必要替代C的io流
c的那些个库函数 c++ 全部有的

如果你不喜欢 fgetc fgets 之类的折腾
干脆把 源代码文件内容 读取到一个字符串中。

const char* s = src.c_str();
然后对 s 字符串的操作你总在行了吧
[解决办法]
char ch;
string str;
wihle(cin.get(ch) && isalnum(ch))
str.push_back(ch);
cin.putback(ch);


类似这样的使用。c++可以兼容c,只不过头文件 由 ctype.h变为 cctype,同时使用
命名空间std而已。

[解决办法]
c++能用c库函数啊

C/C++ code
#include <cctype> /或者 /#include <ctype.h>#include <iostream>using namespace std;int main() { char findnum;cin >> findnum;if(isalpha(findnum)!=0)//可以向下兼容嘛{cout<< "need alpha!" <<endl;}return 0;}
[解决办法]
用c++的流也可以的,没问题。当然继续用c语言的io库函数也没问题。
[解决办法]
如果非较真的话,那么没有

读书人网 >C++

热点推荐