要写一个计算器的程序,我的思路是先把CString类型的算式区分出操作数与运算符,然后按算式原来顺序存储在vector<CString>的数组中,请问该如何实现?

解决方案 »

  1.   

    用堆栈实现计算功能吧实现字符串分割成字符串数组。共两个函数,重载的。执行效率不算高,但是够用了。
    int g_SplitterCString(CArray<CString, CString &> & list, 
           CString & str, LPCTSTR splitter)
    {
     LONG from=0;
     LONG to=1;
     
     while (to>0)
     {
      to=str.Find(splitter, from);
      if (to>0)
      {
       list.Add(str.Mid(from, to-from));
       from=to+_tcslen(splitter);
      }
     }
     
     if (str!=_T(""))
     {
      list.Add(str.Right(str.GetLength()-from));
     }
     
     return 0;
    }int g_SplitterCString(CArray<CString, CString &> & list, 
           LPCTSTR str, LPCTSTR splitter)
    {
     CString cstr=str;
     return g_SplitterCString(list, cstr, splitter);
    }