串行方程式进入CStringarray - MFC

时间:2015-08-03 03:59:53

标签: c++ mfc equation

我对编码很新,所以我可能会有点慢。

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

例如,这就是我的意思:

我有一个字符串

CString str = "123 + 32 / 2"

我希望字符串成为这个......

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

我将如何做到这一点?

我正在考虑使用for循环,找到有空格的地方,然后抓住'那里的数字或操作员,但我无法完全理解我是如何做到的。

2 个答案:

答案 0 :(得分:3)

您可以使用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);
};

答案 1 :(得分:0)

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

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