将CSringArray中的其他字符串元素转换为int - mfcc++

Converting every other string element in a CSringArray into an int - MFC C++

本文关键字:转换 int mfcc++ 元素 字符串 CSringArray 其他      更新时间:2023-10-16

我知道如何将CString转换为int,我可以使用atoi或wtoi,但在这种情况下,字符串在数组内。

在我的情况下,我正在创建一个计算器,其中用户输入他们的方程被存储为字符串。然后,我使用标记器将每个数字和操作符移动到数组中。之后,我只想将数字更改为整型,以便我可以开始获得输入的答案。

我有这样的东西:

CStringArray arr = ['1','+','32','-','5']

我的问题是如何在数组中将字符串转换为整型数?

我在网上看到有人说要减去'0',所以我试着:

for(int i = 0; i < arr.GetSize(); i+2)
 {
    arr[i] = arr[i] - _T('0');  
 }

但我不确定如何检查,因为在visual studio MFC中没有命令行

如果你可以在CString上使用atoi(str),那么就在CStringArray上使用atoi(arr[i])

这是非常基本的,也许你问的是不同的问题

正如@john在他的回答中提到的,您可以尝试这样做:

int j=0;
for(int i = 0; i < arr.GetSize(); i+=2)// use i+=2 instead of i+2
 {
    arr2[j++] = atoi(arr[i]);// value of j->0,1,2.. whereas i->0,2,4,..  
 }

此处arr2为整型数组。
编辑:
如果你想执行像int Ans = arr2[i-1] + arr2[i+1];这样的操作,那么不需要第二个数组。
你可以使用相同的数组

int Ans;
for(int i = 0; i < arr.GetSize(); i++)
{
    if(arr[i] == _T("+"))// or any operator sign
         Ans =  atoi(arr[i-1]) + atoi(arr[i+1]);
}

int Ans = atoi(arr[0]);
for(int i = 1; i < arr.GetSize(); i+2)
{
    switch(arr[i])
    {
     case '+':
        Ans = Ans + atoi(arr[i+1]);// at the end result will save in 'Ans'
        break;
     case '-':
        Ans = Ans - atoi(arr[i+1]);
        break;
    //.........Other cases
    //........
    }
}