将字符串方程转换为 CStringarray - MFC

Posted

技术标签:

【中文标题】将字符串方程转换为 CStringarray - MFC【英文标题】:string equation into CStringarray - MFC 【发布时间】:2015-08-03 03:59:53 【问题描述】:

我对编码还很陌生,所以我可能有点慢。

所以我有一个用户输入的方程的 CString,我想将数字和运算符分开,以便它们在 CStringArray 中有自己的索引。

例如,这就是我的意思:

我有一个字符串

CString str = "123 + 32 / 2"

我想把字符串放到这个...

CStringArray arr = ['123', '+' , '32' , '/' , '2']

我该怎么做呢?

我正在考虑使用 for 循环,并找到有空格的位置,然后“抓取”那里的数字或运算符,但我无法真正理解如何做到这一点。

【问题讨论】:

【参考方案1】:

您可以使用 CString 的 Tokenize() 方法来拆分字符串。查看 msdn 文档中的示例:https://msdn.microsoft.com/en-us/library/k4ftfkd2.aspx 这是您的问题的代码,它与您的数据示例中的代码相同。您必须将 resToken 添加到您的 CStringArray 才能填充它。

CStringArray arr;
CString m_StoreEx = _T("123 + 32 / 2");
int curPos = 0;
CString resToken= m_StoreEx.Tokenize(_T(" "),curPos);
while (resToken != _T(""))

   _tprintf_s(_T("Resulting token: %s\n"), resToken);
   arr.Add(resToken);
   resToken = m_StoreEx.Tokenize(_T(" "), curPos);
;

【讨论】:

我阅读了 msdn 文档,我现在的问题是,如何操作“令牌”?喜欢我如何使用它?是一个像变量一样的令牌吗?我只是不知道如何将它添加到我的数组中。我试过:`CStringArray arr; int curPos = 0; CString resToken= m_StoreEx.Tokenize(_T(" "),curPos); while (resToken != _T("")) //_tprintf_s(_T("Resulting token: %s\n"), resToken); resToken = m_StoreEx.Tokenize(_T(" "), curPos); arr.Add(resToken); `你似乎对我有用吗 m_StoreEx 我的 CString 变量,用于存储方程式字符串 btw【参考方案2】:
CString s = _T("123 + 32 / 2");
CStringArray sa;

int i = 0, j = 0;
while (-1 != (i = s.Find(' ', i))) 
    if (i != j)
        sa.Add(s.Mid(j, i - j));
    j = ++i;

sa.Add(s.Mid(j)); // Last one

您可以将其放入辅助函数中以供进一步使用。

【讨论】:

以上是关于将字符串方程转换为 CStringarray - MFC的主要内容,如果未能解决你的问题,请参考以下文章

如何将 std::string 转换为 int?

如何使用关键部分 - MFC?

逆向工程方程将密文转换为明文

(算法专题)使用常微分方程将递归转换为非递归

如何将方程转换为单个变量的公式?

将嵌入在 OLE 二进制文件中的 MathType 方程转换为 MathML