将C字符串的Section转换为double

Convert a Section of a C-String to a double

本文关键字:转换 double Section 字符串      更新时间:2023-10-16

我正在一次一行地将一个大数据文件读入char[]。我需要对char[]中的几个字段求和。

假设我得到一个初始化的:char input[4270];我想找到一个数字,下面是我所知道的:

  • 它从索引1234开始
  • 长度不超过10 char s
  • 其格式为"567.89">
  • 如果短于10 char s,则数字将左对齐并填充空格

在提取这个索引和另一个索引处的数字后,我需要将它们的总和转换回char[],以便将输出写回文件。

我该如何完成这次往返旅行?

您可以使用stodchar[]转换任何合法的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);

[实际示例]