gpt4 book ai didi

c++ - 无法将字符串转换为 float

转载 作者:行者123 更新时间:2023-11-28 06:21:42 27 4
gpt4 key购买 nike

我编写了一段代码,在其中扫描字符值并将它们存储到一个数组中。我键入 'x' 以停止扫描字符。现在我将 '\0' 放在数组的末尾以将数组转换为字符串。现在,我尝试使用 std::stof 将此字符串转换为 float 。这是我的代码

#include "stdafx.h"
#include<stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
char str[100];;
char rec;
char count=0;
double n;
std::string::size_type sz;

while(1)
{
scanf("%c",&rec);
if(rec=='x')
{
str[count]='\0';
printf("%s\n",str);
sz = strlen(str);
float value = std::stof (str,&sz);
printf("%f",value);
}
else
{
str[count]=rec;
count++;
}

}
return 0;
}

但此代码仅将第一个字符转换为浮点值。例如,我输入:

1
2
3
.
4
x

我的输出是:-

1.000000

所以,请告诉我问题出在哪里

最佳答案

出现这个问题是因为输入缓冲区没有被清除。当您按下回车键时,换行符 \n 被添加到输入缓冲区。这可以通过在调用 scanf 之后添加 while(getchar()!='\n'); 来解决。

在评论中,πìντα ῥεῖ 提到使用 std::cout 而不是 printf()std::cin 而不是 scanf() 可以简化您的代码。它还可以解决此问题。

关于c++ - 无法将字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29205568/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com