我正在写一个词法分析器,它分析C++中的给定字符串。我有一串
line = R"(if n = 4 # comment
return 34;
if n≤3 retur N1
FI)";
我需要做的就是在 vector 中输出所有单词,数字和标记。我的程序可以使用常规标记,单词和数字。但我不知道如何解析Unicode字符。我的程序需要保存在 vector 中的唯一Unicode字符是≤和≠。
到目前为止,我所有的代码基本上都是一行一行地读取字符串,读取第一个单词,数字或 token ,将其切掉,然后递归继续吃 token ,直到字符串为空。我无法比较
line[0]
和≠
(当然),并且我也不清楚要摆脱Unicode字符需要砍掉多少字符串?在"!="
的情况下,我简单地删除line[0]
和line[1]
。
最佳答案
如果您的输入文件是utf8,则只需将Unicode字符≤
,≠
等视为字符串。因此,您只需要使用与"≤"
相同的逻辑来识别"<="
即可。然后由strlen("≤")
给出Unicode字符的长度
关于c++ - 在C++中查找和比较Unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64298164/