Я пишу код, в котором я просматриваю значения символов и сохраняю их в массиве. Я печатаю 'x'
, чтобы остановить сканирование символов. Теперь я положил '\0'
в конец массива, чтобы преобразовать массив в строку. Теперь я пытаюсь преобразовать эту строку в float, используя 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
Так, пожалуйста скажите мне, где проблема
Использование 'std :: cout' вместо' printf() 'и' std :: cin' вместо 'scanf()' может значительно упростить ваш код. –
Но printf() и scanf() намного быстрее, чем std :: cout и std :: cin. –
@tourniquet_grab Считаете ли вы, что скорость является проблемой для такого рода программ? – Jagannath