正在分析包含逗号的ASCII值

Parsing ASCII value containing commas

本文关键字:ASCII 包含逗      更新时间:2023-10-16

我有一个ascii unsigned char *值,其值如下:

"1.657e-01,4.8552e-01,8.7585e-01"

我想解析这个值,并将这个值转换为3个double
目前我正在做一个漫长的过程:

  1. 将此值强制转换为字符串temp_S(reinterpret_cast<char *>(ascii_value));
  2. 查找,的所有出现,然后生成子字符串
  3. 使用stod函数将这些子字符串转换为double。

    • 这样做是正确和安全的吗
    • 有没有其他方法可以直接解析ASCII中的值并将其转换为double

<stdlib.h>中的strtod()返回解析后的值,并指向值文本后的下一个字符。您可以围绕它和strspn()循环以跳过逗号。

既然您提到了reinterpret_cast<>,我假设您实际上有一个C++编译器。

#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main() {
    string s("1.657e-01,4.8552e-01,8.7585e-01");
    vector<double> data;
    for (istringstream iss(s); ; ) {
        double x;
        iss >> x;
        if ( ! iss) {
            cout << "Parse error" << endl;
            break;
        }
        data.push_back(x);
        char comma = 0;
        iss >> comma;
        if ( ! iss)
            break;
        if (',' != comma) {
            cout << "What is [" << comma << "]?" << endl;
            break;
        }
    }
    cout << "Parsed " << data.size() << " pieces of data" << endl;
}
  • http://ideone.com/rWXP57