将CSringArray中的其他字符串元素转换为int - mfcc++
Converting every other string element in a CSringArray into an int - MFC C++
我知道如何将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
//........
}
}
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 是否可以从int转换为enum类类型
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 将 int 数组转换为 std::vector<int*>
- 如何转换 int 变量并附加到常量 wchar_t*
- 类型转换<int>的舍入问题
- 在Objective-C中调用sqlite3数据库时,如何调用和转换int/NSNumber
- 转换 int -> 无符号长 长 是否由标准定义
- 简单的 int 到字符串转换..int to const char* 无效
- 如何将转换 int 除法键入为浮点数
- C++类型转换 int * 到类
- 预期的类型说明符,并且无法在初始化时转换“int*”
- 转换int并将其与char*连接
- 字符串流在转换int型时添加新行
- 转换int为字符串/char c++ /Arduino
- c# P-Invoke:如何转换INT fun(BYTE *bStream, UINT16 *nCount, const
- 类型转换(int**)和int(*)的区别
- 从"int"到"nodeType"的无效转换<int>
- 从无符号int构造对强制转换int的引用