c++ - 拆分 LPSTR 并将值相加为 long

标签 c++ lpstr

我正在尝试采用 C++ 中的 LPSTR,例如“12,30,57”并将其拆分,然后将从拆分操作返回的所有数字(它们都是非十进制的)相加到结果中长值。

我可以向你保证,这不是家庭作业。这是我正在编写的一个扩展,它要求我用 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;

最佳答案

一个简单的方法(有很多,有些或多或少有效):

LPSTR urcstring = "12,30,57";
std::stringstream ss(urcstring);
long n,m,p; 
char comma;

ss >> n;
ss >> comma;
ss >> m;
ss >> comma;
ss >> p;

std::cout << "sum: " << ( n + m +p ) << std::endl;

关于c++ - 拆分 LPSTR 并将值相加为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977589/

相关文章:

C++ 将 LPSTR 缓冲区添加到 char 数组

c++ - 我可以在 .pro 文件中使用 Qt 安装路径变量吗?

c++ - 输入和字体在 EGLFS QPA 上互斥

C++ - 在 Windows 下的 MinGW 中将 LPSTR 转换为 const char*

c++ - 如何将 char[256] append 到编辑控件的内容?

C++ 函数指针类型错误

c++ - SendKeys 不适用于预定义的 LPSTR。

c++ - Eigen 与 EIGEN_USE_MKL_ALL

c++ - 将对象转换为 std::unique_ptr

c++ - 找不到头文件 iostream Visual Studio 2010