vs2013 C++编译错误,系统文件出错
错误 1 error C2678: 二进制“==”: 没有找到接受“std::basic_string<char,std::char_traits<char>,std::allocator<char>>”类型的左操作数的运算符(或没有可接受的转换)
显示错误的文件为xutility,这个文件是系统文件啊,不可能有错啊
#include <string>
#include <cstring>
#include <cstringt.h>
#include <iostream>
#include <fstream>
#include <stdexcept>
using namespace std;
该包含的文件都包含了,就是找不到错误的地方
程
int FormulaAnalysis::Createsuoyin(CString mathstra, CString pOldFilea, int num)
{
// return 1;
CString mathstr = mathstra;
CString pOldFile = pOldFilea;
// string num(numa);
CString mathstr1 = "";
CString math = mathstr;
// AfxMessageBox(mathstr.c_str()); AfxMessageBox(pOldFile.c_str());
math.Replace(" ", "");
math.Replace("\r\n", "");
lan = math.GetLength();
if (lan>1)
{
char math0 = math[0];
string asc;
asc.insert(asc.begin(),math0);
//asc = math0.ToString();
math0 = math[1];
asc += math0;
if (asc == "\\[")
{
lan = lan - 4;
math = math.Left(lan+2);//MessageBox(NULL,math.c_str(),"OK",MB_OK);
math = math.Right(lan);//MessageBox(NULL,math.c_str(),"OK",MB_OK);
}
}
int countnum=-1;
//countnum = addmathexp(math, pOldFile, num);
if ( countnum == -1)
{
/
powerT = 0;
powerT1 = 0;
powerT2 = 0;
fracT = 0;
sqrtT = 0;
for (fracT2 = 0; fracT2<10; fracT2++)
{
fracT1[fracT2] = 0;
fracT3[fracT2] = 0;
}
// fracT3=0;
fracT4 = 0;
intT = 0;
intT1 = 0;
intT2 = 0;
if (lan<1)
return 0;
int i;
for (i = 0; i<lan; i++)
{
p = (myNode)malloc(sizeof(myArray));
p->str = "";
p->level = 0;
p->caozuofu = 0;
p->flag = 0;
}
syslan = 0;
sysi = 0;
Level = 0;
Flag = 0;
Middle = 0;
Big = 0;
// AfxMessageBox(math.c_str());
while (sysi<lan)
{
Analysis(p, Level, Flag, Middle, Big);
// AfxMessageBox("a jiesu");
if (sysi<lan)
{
sysi++;
syslan++;
}
}
//AfxMessageBox("aa");
string last = "";
string lastt = "";
string wordstr;
//string wordstr = null;
//char lastt1[25];
string lastt1 ;
for (i = 0; i<syslan; i++)
{
// last+=myarray[i].str+" ";
//last += myarray1[i].str + " ";
last +=p->str + " ";
lastt1.insert(lastt1.begin(), p->level);
//itoa(myarray1[i].level,lastt1,10);
//lastt1 = myarray1[i].level.ToString();
lastt = lastt1;
last += lastt + " ";
lastt1.insert(lastt1.begin(), p->caozuofu);
//itoa(myarray1[i].caozuofu,lastt1,10);
//lastt1 = myarray1[i].caozuofu.ToString();
lastt = lastt1;
last += lastt + " ";
lastt1.insert(lastt1.begin(), p->flag);
//itoa(myarray1[i].flag,lastt1,10);
//lastt1 = myarray1[i].flag.ToString();
lastt = lastt1;
last += lastt + " ";
//wordstr=(char*)(LPCTSTR)myarray1[i].str.c_str();
wordstr = p->str;
//int wordindex = Hash(wordstr);
//int wordindex;
//int index = wordindex;
//int intIndex = index;
//theIndexFun.AddNode(intIndex, myarray1[i].str, pOldFile, num, i + 1, myarray1[i].level, myarray1[i].caozuofu, myarray1[i].flag, syslan);
}
return 1;
}
else
return 0;
}
/*int FormulaAnalysis::Hash(string str)
{
int hash = 5381;
int c;
foreach(char ch ,in str)
{
hash = ((hash << 5) + hash) + ch;
}
return hash;
}*/
/*int FormulaAnalysis::addmathexp(CString mathexp, CString pfileno, int num)
{
SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=InvertIndex;Integrated Security=True;");
string sql;
sql = "select count(*) from HASHTable where pFileNo='";//%d",index);
sql = sql + pfileno + "'";
SqlCommand comm = new SqlCommand();
comm.Connection = con;
con.Open();
comm.CommandText = sql;
int nFields1 = (int)comm.ExecuteScalar();
con.Close();
if (nFields1 == 0)
{
nFields1++;
char *plcf=new char[5];
//string plcf = null;
itoa(nFields1,plcf,10);
//plcf = nFields1.ToString();
sql = "insert into HASHTable values ('";//%d,%d,'%s',%d,%d,'%s')",index,nFields2,pFileNo,1,syslan,sqlstr);
sql = sql + pfileno + "','" + mathexp + "'," + plcf + ")";
// AfxMessageBox(sql.c_str());
//m_db.ExecuteSQL(sql.c_str());
con.Open();
comm.CommandText = sql;
comm.ExecuteNonQuery();
con.Close();
nFields1 = -1;
}
else
{
char plcf[5];
itoa(num,plcf,10);
sql = "insert into HASHTable values ('";//%d,%d,'%s',%d,%d,'%s')",index,nFields2,pFileNo,1,syslan,sqlstr);
sql = sql + pfileno + "','" + mathexp + "'," + plcf + ")";
con.Open();
comm.CommandText = sql;
comm.ExecuteNonQuery();
con.Close();
nFields1 = -1;
}
//m_db.Close();
con.Close();
return nFields1;
}*/
void FormulaAnalysis::Analysis(myNode p, int level, int flag, int middle, int big)
{//AfxMessageBox("bb");
if (sysi >= lan)
return;
char math0 = math[sysi];
string asc;
int asc1 = math0;//atoi(asc.c_str());
//AfxMessageBox(asc.c_str());
if (math0 == '\\')
{
FunctionAnalysis(p, level, flag, middle, big);
}
else if (math0 == '{')
{
if (middle != 0)
{
big++;
}
if (powerT != 0)
{
powerT1++;
powerT2 = 0;
}
PowerAnalysis(p, level, flag, middle, big);
}
else if (math0 == '}')
{
if (big > 1)
{
sysi++;
big--;
if (powerT2 == 1)
{
powerT--;
level--;
powerT2 = 0;
if (powerT1 != 0)
powerT1--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if (powerT2 == 0)
{
if ((powerT == powerT1) && (powerT1 > 1))
{
powerT--;
level--;
powerT1--;
if (sysi < lan)
{
int sysit = 1;
while ((p-syslan+sysit)->level != level)
//while (p.level[syslan - sysit] != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if ((powerT == 1) && (powerT1 == 0))
{
powerT--;
level--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if ((powerT == powerT1) && (powerT1 == 1))
{
powerT1--;
powerT2 = 1;
Analysis(p, level, flag, middle, big);
}
else if ((powerT < powerT1))
{
powerT1--;
powerT2 = 1;
Analysis(p, level, flag, middle, big);
}
else
{
if (sqrtT == 1)
{
sqrtT = 0;
if (sysi < lan)
{
Analysis(p, level, flag, middle, big);
}
}
else
{
level--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
}
}
}
else if (big == 1)
{
if (middle != 0)
{
if ((middle % 2) == 1)
{
big = 0;
sysi += 3;
middle++;
Analysis(p, level, 5, middle, big);
}
else
{
middle -= 2;
level--;
sysi += 2;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
if (fracT != 0)
{
fracT--;
big = fracT1[fracT];
middle = fracT3[fracT];
}
Analysis(p, level, flag, middle, big);
}
}
}
}
else
{
if (middle != 0)
{
if ((middle % 2) == 1)
{
big = 0;
sysi += 2;
middle++;
Analysis(p, level, 5, middle, big);
}
else
{
middle -= 2;
level--;
sysi++;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
if (fracT != 0)
{
fracT--;
big = fracT1[fracT];
middle = fracT3[fracT];
}
Analysis(p, level, flag, middle, big);
}
//sysi--;
}
}
else
{
sysi++;
if (powerT2 == 1)
{
powerT--;
level--;
powerT2 = 0;
if (powerT1 != 0)
powerT1--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if (powerT2 == 0)
{
// if(fracT!=0||fracT4!=0)
// fracT1--;
if ((powerT == powerT1) && (powerT1 > 1))
{
powerT--;
level--;
powerT1--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if ((powerT == 1) && (powerT1 == 0))
{
powerT--;
level--;
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level!= level)
{
sysit++;
}
flag =(p - sysit)->flag;
Analysis(p, level, flag, middle, big);
}
}
else if ((powerT == powerT1) && (powerT1 == 1))
{
powerT1--;
powerT2 = 1;
Analysis(p, level, flag, middle, big);
}
else if ((powerT < powerT1))
{
powerT1--;
powerT2 = 1;
Analysis(p, level, flag, middle, big);
}
else
{
if (sqrtT == 1)
{
sqrtT = 0;
if (sysi < lan)
{
Analysis(p, level, flag, middle, big);
}
}
else
{
if ((currentKeyWord == "sqrt" || currentKeyWord == "frac" || currentKeyWord == "sum" || currentKeyWord == "prop") && level>0)
{
level--;
}
if (sysi < lan)
{
int sysit = 1;
while ((p - sysit)->level != level)
{
sysit++;
}
flag = p->flag;
Analysis(p, level, flag, middle, big);
}
}
}
}
}
}
}