字符串取出处理并插入回去

yskshift 2014-10-15 10:01:18
新手~~比如我有一串CString类型的字符串 str="02000000,0000,0000a300," 每个数字(十六进制)都用逗号隔开了,想把里面字符串取出变成十进制,再放回,应该怎么样写呢,谢谢!
...全文
140 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2014-10-15
  • 打赏
  • 举报
回复
e 忘记初始化啦: 17 b = 0; 18 e = 0;
mymtom 2014-10-15
  • 打赏
  • 举报
回复
C++用find, C用strtok呀

#include <iostream>
#include <string>
using namespace std;

int
main(int argc, char *argv[])
{
    string s;
    string r;
    string::size_type b, e;
    char c;
    unsigned u;
    char buf[1024];

    s = "02000000,0000,0000a300,";
    c = ',';
    b = 0;
    while (e != string::npos && b < s.length()) {
        e = s.find(c, b);
        if (e != string::npos) {
            u = strtoul(s.substr(b, e).c_str(), NULL, 16);
            b = e + 1;
        } else {
            u = strtoul(s.substr(b).c_str(), NULL, 16);
        }
        sprintf(buf, "%u", u);
        r += buf;
        r += c;
    }

    cout << r << endl;

    return 0;
}
Uron 2014-10-15
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;

int GetValue(char value)//没有考虑不符合要求的字符
{
if ( value >= 'a' && value <= 'f')
return (value - 'a') + 10;
else
return value - '0';
}
void TypeChange(char* p, const int size, string& tempStr)
{
int result = 0;
for (char* q = p + size; p < q; p++)
{
result = (result + GetValue(*p)) * 16;
}
result /= 16;
char ch[128] = {0};
sprintf(ch, "%d,", result);
tempStr += ch;
}
int main()
{
char chInfor[256] = "02000000,0000,0000a300";
char* p = strtok(chInfor, ",");
string tempStr = "";
while (p != NULL)
{
TypeChange(p, strlen(p), tempStr);
p = strtok(NULL, ",");
}
cout << tempStr << endl;
return 0;
}

yskshift 2014-10-15
  • 打赏
  • 举报
回复
yskshift 2楼
嗯 已经解决了取出和放回,cstring类型的十六进制转十进制,请问用什么函数,网上找到很多
yskshift 2014-10-15
  • 打赏
  • 举报
回复
嗯 已经解决了取出和放回,cstring类型的十六进制转十进制,请问用什么函数,网上找到很多
starytx 2014-10-15
  • 打赏
  • 举报
回复
CString有很多方法可供使用,比如你可能需要find函数,找到逗号,然后用Left取出第一个逗号前边的子串,然后再做处理,其他子串以此类推

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧