找回密码
 立即注册
收起左侧

在Qt中使用algorithm出现问题

1
回复
3707
查看
[复制链接]
累计签到:108 天
连续签到:1 天
来源: 2015-5-30 14:00:33 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这是在做编译原理实验,写界面时遇到的问题。

问题是这样的:
我在QTextEdit中,输入一些内容(也就是程序的源代码)
比如想这样:
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. return 0;
  6. }
复制代码
然后从QTextEdit中通过toplaintext().split('\n')获取QTextEdit中的每一行,并保存到一个QStringList中,然后将QStringList中的字符串转化为c++支持的string
  1. string oneline;
  2. oneline=qstringlist[0].tostdstring;
复制代码
然后从oneline中 分离出单词,比如分离出了一个using,然后在关键字列表(关键字列表是用stl中的list保存的,保存的内容为字符串)里用find函数查找是否有using,结果发现找不到,但是关键字列表里确实有Using这个单词,而且源码在vs2012里面跑,是可以找到的,但是移植到Qt用相同的方法就找不到了。请问一下这个怎么解决??

我觉得出错的原因可能在从QString转换到string,转换过程中,某些导致字符编码什么的不一样所以在list中找不到了




回复

使用道具 举报

累计签到:108 天
连续签到:1 天
2015-5-30 14:02:30 显示全部楼层
查找的时候是这样查找的;
temp保存这分离出来的单词,是一个字符串类型
  1. list<string>::iterator it=std::find(KeyWordList.begin(),KeyWordList.end(),temp);
  2.     if(it!=KeyWordList.end()){
  3.         newdata.wordtype=1;
  4.         newdata.type="关键字";
  5.     }
  6.     else{
  7.         newdata.wordtype=2;
  8.         newdata.type="标识符";
  9.     }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了