谢谢各位:)
我还有一个问题,是这样的:
问题如下:CString a="(-a)+(-b)+(-c)";
CString b="(a)+(b)+(d)";我想把这两个字符串中只要遇到括号内的变量是互反的(假设在一个字符串内不会出现变量互反)
就将它们消去
然后连并成一个新的字符串
这样就得到一个新的字符串 CString c让它的值是 "(-c)+(d)"
请问有什么函数或方法来实现吗?谢谢啦!
我还有一个问题,是这样的:
问题如下:CString a="(-a)+(-b)+(-c)";
CString b="(a)+(b)+(d)";我想把这两个字符串中只要遇到括号内的变量是互反的(假设在一个字符串内不会出现变量互反)
就将它们消去
然后连并成一个新的字符串
这样就得到一个新的字符串 CString c让它的值是 "(-c)+(d)"
请问有什么函数或方法来实现吗?谢谢啦!
谢谢
恩......没太看明白你写的思路
编译里的词法分析我略知一些
CString a="(-a)+(-b)+(-c)";
CString b="(a)+(b)+(d)";
CList<CString,CString> m_List;
int m,n=0;
while((m=a.Find('(',n)+1)&&(n=a.Find(')',m)+1))
{
m_List.AddTail(a.Mid(m,n-m-1));
}
n=0;
while((m=b.Find('(',n)+1)&&(n=b.Find(')',m)+1))
{
CString d=b.GetAt(m)=='-'?"":"-";
POSITION pos = m_List.Find(d+b.Mid(m,n-m-1));
if(NULL == pos)
m_List.AddTail(b.Mid(m,n-m-1));
else
m_List.RemoveAt(pos);
}
POSITION pos=m_List.GetHeadPosition();
CString c="";
while(pos!=NULL)
c+=(c==""?"(":"+(")+m_List.GetNext(pos)+")";
MessageBox(c);
报出几个错
真的太谢谢你了!我还有个问题:我用MFC做了一个简单的界面,是基于对话筐的,我在界面上添加了一个Edit Box和一个按纽,并且 在 ClassWizard--->Member Variables 中把Edit Box定义为CString类型,变量名起的是m_a,双击按钮后在函数里我又定义了一个CString的变量tempCString temp;
temp=m_a;
MessageBox(temp);编译没有错,运行后我在Edit Box中输入了内容,但是弹出的对话筐却没有任何显示
说明temp的值是空的,请问该如何修改程序。谢谢谢谢
在temp=m_a;后添加 UpdateData(true);来将控件的值传到m_a。用UpdateData(false);将程序运行中改变后的m_a的值传到控件中去显示。