C++ 由十进制数分隔成双c++;
我正在传递一个字符串变量(std::string)并逐个字符地遍历字符串。每当遇到小数点时,我都希望将字符串上的前一个位置(即2)和字符串中的下一个位置(即5)组合成一个双精度。那么我该如何制作char 2,char,将字符5转换为一个整数值(2.5)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::双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