将C字符串的Section转换为double
Convert a Section of a C-String to a double
我正在一次一行地将一个大数据文件读入char[]
。我需要对char[]
中的几个字段求和。
假设我得到一个初始化的:char input[4270];
我想找到一个数字,下面是我所知道的:
- 它从索引
1234
开始 - 长度不超过10
char
s - 其格式为"567.89">
- 如果短于10
char
s,则数字将左对齐并填充空格
在提取这个索引和另一个索引处的数字后,我需要将它们的总和转换回char[]
,以便将输出写回文件。
我该如何完成这次往返旅行?
您可以使用stod
从char[]
转换任何合法的double
(与长度无关(。
例如,假设我得到了输入:
char cstring[] = "blah 13.42 blah blah";
如果我知道我想转换的数字的索引(这里是5
(,我可以如下使用:
const double num = stod(cstring + 5);
[实例]
顺便说一句,如果您提供的索引指向实际数字stod
之前的空白字符,则仍然有效。
要返回到char[]
,并且您不介意从printf
的%f
格式打印结果,那么我建议简单地使用to_string
并进行复制。例如:
const string backToChars = to_string(num + 13.0);
copy(backToChars.cbegin(), backToChars.cend(), cstring + 5);
[实际示例]
相关文章:
- C++在数学计算中将double转换为int
- 有没有办法在C++的赋值中将"char**"转换为"double"?
- 错误:无法将"<lambda(double)>"转换为"double(*)(double)"
- 如何正确将"strings"转换为"double"?
- Zedboard zynq-7000 Opencl 浮点数从类型 'double*' 强制转换为类型 'double' 无效
- "std::function<double(double)>"到"double (*)(double)"之间的转换
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 缩小从double到float的转换
- 在不复制数据的情况下,将double数组转换为只有double成员的structs数组
- 将 mwArray 转换为 std::vector<double>
- 使用词法强制转换在'string to double'中设置双精度变量的精度
- 如何将 Java double[][] 转换为 C++ <vector<vector>> JNI?
- 从 std::vector<double> 到 Python 列表的转换失败(提升 python)
- 转换 cv::mat 转换为 std::矢量<double>并发症
- 将双数组转换为标准::复杂<double>
- 将 std::vector<boost::optional<double>> 转换为 std::vector<double>
- 将 double* 转换为 std::vector<double> (C++)
- 无法将复数<double>转换为双精度
- 将 int 转换为双精度以执行 std::complex <double>的"*"操作
- "double(*)(string, double, double)"尝试传递函数C++时"double"转换错误