C++ 将C字符串的一部分转换为双精度
我一次读取一个大数据文件到一个C++ 将C字符串的一部分转换为双精度,c++,arrays,file,double,C++,Arrays,File,Double,我一次读取一个大数据文件到一个char[]行中。我需要对char[]中的几个字段求和 假设给我一个初始化:char输入[4270]我想找到一个号码,以下是我知道的: 它从索引1234开始 它的长度将不超过10个字符 其格式为“567.89” 如果小于10chars,则数字将左对齐并填充空格 在提取这个索引和另一个索引处的数字后,我需要将它们的总和转换回一个char[],以便将输出写回一个文件 如何完成此往返行程?您可以使用将char[]转换为任何合法的double(与长度无关) 例如,假设我
char[]
行中。我需要对char[]
中的几个字段求和
假设给我一个初始化:char输入[4270]代码>我想找到一个号码,以下是我知道的:
- 它从索引1234开始
- 它的长度将不超过10个字符
- 其格式为“567.89”
- 如果小于10
char
s,则数字将左对齐并填充空格
在提取这个索引和另一个索引处的数字后,我需要将它们的总和转换回一个char[]
,以便将输出写回一个文件
如何完成此往返行程?您可以使用将char[]
转换为任何合法的double
(与长度无关)
例如,假设我得到了输入:
char cstring[] = "blah 13.42 blah blah";
如果我知道要转换的数字的索引(这里是5
),我可以按如下方式使用:
const double num = stod(cstring + 5);
[]
顺便说一句,如果您提供的索引指向实际数字前面的空白字符stod
,则仍然有效
要返回到char[]
,并且您不介意从printf
的%f
格式打印的结果,那么我建议只使用和复制。例如:
const string backToChars = to_string(num + 13.0);
copy(backToChars.cbegin(), backToChars.cend(), cstring + 5);
[]那么,问题是什么?如何将字符数组的一部分转换为double,然后再转换回来?@lefeal将文本转换为double值?这可以通过函数实现。你的问题是基本的编程技巧,真的。您似乎无法将一个简单的任务分解为3个甚至更简单的子任务:查找编号、查找编号末尾、将中间的部分传递给正确的函数。你找出了第一个子任务,但是在C++代码中也没能做到这一点。