我正在尝试在 C++ 中获取一个 LPSTR,例如“12,30,57”并将其拆分,然后将从拆分操作返回的所有数字(它们都是非十进制)相加成一个结果 long 值。
我可以向你保证,这不是家庭作业。这是我正在编写的一个扩展,它需要我在 C++ 中编写程序代码,因为主开发环境不支持函数。我是一名 Java/C# 开发人员,所以这一切都是一个谜。注意:这是纯 C++ 而不是 C++.NET。我最终也将不得不用 Objective-C 编写一个版本(哦,高兴),所以尽可能多地兼容 ANSI-C++,我会过得更好。
答案:
我只是想感谢大家的帮助,并与您分享我的代码,它运行良好。这对我来说有点牵强,因为我不是一个真正的 C++ 人。不过谢谢大家。
// Get
long theparam = GetSomeLPSTR(); // e.g. pointer to "1,2,3,4,5,6"
// Set
char *temp = (LPSTR)theparam;
char *temp2 = (LPSTR)malloc(strlen(temp)+1);
strcpy(temp2,temp);
long result = 0;
char * pch;
// Split
pch = strtok(temp2,",");
// Iterate
while (pch != NULL)
{
// Add to result
result += atoi(pch);
// Do it again
pch = strtok (NULL,",");
}
// Return
return result;