C++ 由十进制数分隔成双c++;

C++ 由十进制数分隔成双c++;,c++,C++,我正在传递一个字符串变量(std::string)并逐个字符地遍历字符串。每当遇到小数点时,我都希望将字符串上的前一个位置(即2)和字符串中的下一个位置(即5)组合成一个双精度。那么我该如何制作char 2,char,将字符5转换为一个整数值(2.5) std::双x; std::string varibleName=“4 5 7 2.5”; 对于(int i=0;i,它在失败的转换中正确设置 ErnOn/Cuth>,并提供了一个 EntPtR> /Cuff>参数,以验证是否发生了转换。请不要在

我正在传递一个字符串变量(std::string)并逐个字符地遍历字符串。每当遇到小数点时,我都希望将字符串上的前一个位置(即2)和字符串中的下一个位置(即5)组合成一个双精度。那么我该如何制作char 2,char,将字符5转换为一个整数值(2.5)

std::双x;
std::string varibleName=“4 5 7 2.5”;
对于(int i=0;i
请注意,给出一个示例、代码片段和错误日志会使故障排除变得更容易:)

听起来您有一些类似于
“2.1”
的输入,需要将其转换为类似于
2.1

如果是这种情况,您可以使用该函数

例如:

/* atof example: sine calculator */
#include <stdio.h>      /* printf, fgets */
#include <stdlib.h>     /* atof */
#include <math.h>       /* sin */

int main ()
{
  double n;
  char buffer[256];
  printf ("Enter degrees: ");
  fgets (buffer,256,stdin);
  n = atof (buffer);
  printf ("You entered %s which is a double like %f\n" , buffer, n);
  return 0;
}
/*例如:正弦计算器*/
#包括/*printf、fgets*/
#包括/*atof*/
#包括/*sin*/
int main()
{
双n;
字符缓冲区[256];
printf(“输入度:”);
fgets(缓冲区,256,标准输入);
n=atof(缓冲区);
printf(“您输入了%s,它是一个类似于%f\n的双精度字符”,缓冲区,n);
返回0;
}

嗯,你想得太多了。C++库提供了完全符合您需要的内容。将类似
“2.5”
的字符串转换为
浮点数
双精度
长双精度
,例如

#include <iostream>

int main (void) {

    std::string s = "2.5";
    double d = std::stod(s);

    std::cout << d << "\n";
}

仔细检查一下,如果您还有更多思考过度的问题,请告诉我。

Eh,
std::strtod
?首先发布一个说明您的问题的示例。也许我们会有机会回答。坏问题;否决票。请记住你所尝试的。这并不意味着它不符合你的目的。向我们展示你的尝试以及它是如何起作用的。不是完全正确的语言,但情绪是一样的。不要在C中使用
atof
。它没有错误检查。而是使用<代码> Sttood < /Cord>,它在失败的转换中正确设置<代码> ErnOn/Cuth>,并提供了一个<代码> EntPtR> /Cuff>参数,以验证是否发生了转换。请不要在C++答案上使用C代码。
#include <iostream>

int main (void) {

    std::string s = "2.5";
    double d = std::stod(s);

    std::cout << d << "\n";
}
$ ./bin/stodex
2.5