「12,30,57」などの C++ で LPSTR を取得して分割し、分割操作から返されたすべての数値 (すべて非 10 進数) を合計して、結果の長い値にしようとしています。
これは私が保証できる宿題ではありません。これは、メインの開発環境が関数をサポートしていないため、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;