将字符串方程转换为 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的主要内容,如果未能解决你的问题,请参考以下文章