正在分析包含逗号的ASCII值
Parsing ASCII value containing commas
我有一个ascii unsigned char *
值,其值如下:
"1.657e-01,4.8552e-01,8.7585e-01"
我想解析这个值,并将这个值转换为3个double
值
目前我正在做一个漫长的过程:
- 将此值强制转换为字符串
temp_S(reinterpret_cast<char *>(ascii_value));
- 查找
,
的所有出现,然后生成子字符串 使用
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
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 编译包含字符串的代码时遇到问题
- c++库的公共头文件中应该包含什么
- 将包含C样式数组的对象初始化为成员变量(C++)
- 是否需要删除包含对象的"pair"?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何将包含epoch时间的十六进制字符串转换为time_t
- 使用mongocxx驱动程序时包含头文件问题
- 如何在h文件中包含.o对象文件
- 在混合代码库中将C转换为C++时出现许多包含错误
- VS2017,C++包含目录与附加包含目录,子文件夹包含失败-但为什么
- cmath抛出错误C2062、C2059、C2143和C2447.cmath包含在矢量文件中
- 为什么您需要C++头文件的包含保护
- 无法在UE4中包含BP类到CPP类
- g++ 说函数不存在,即使包含正确的标头
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 写入包含非 ASCII 字符的字符串 - 仅当字符串是变量时才出错
- 正在分析包含逗号的ASCII值
- 将包含非ascii字符的字节数组转换为字符串