我正在尝试将我的字符数组数据转换为float。有可能吗?
代码:
char str[5] = {'1', '2', '.', '3'}
void main(char str[])
{
float var = (float)str[]; //error
}
此代码无效。所以我也尝试使用:
float var = (float) (str[0], str[1], str[2], str[3]); //output: 49
以及
float var = (float) (str[0] + str[1] + str[2] + str[3]); //output: 196
但他们也没有按预期工作..
我的预期输出应为float var = 12.3
答案 0 :(得分:7)
是的,使用std::stof
,它接受一个C字符串(即一个以空字符结尾的字符数组)并给你一个后退(如果可能的话):
#include <iostream>
#include <string>
#include <cassert>
int main(int argc, char* argv[])
{
assert(argc >= 2);
const float var = std::stof(argv[1]);
std::cout << var << '\n';
}
// $ myProgram 12.3
// 12.3
请注意,我还更正了您的main
返回类型(必须是int
),并且我使用了更常规的函数参数集:尽管它们的要求已经达到实施,VS doesn't document any support for this unconventional variant。
当然,您不需要输入来自命令行:
#include <iostream>
#include <string>
int main()
{
const std::string str = "12.3";
// or `const std::string str = {'1', '2', '.', '3'};
// or `const char str[] = {'1', '2', '.', '3', '\0'};
const float var = std::stof(str);
std::cout << var << '\n';
}
// $ myProgram
// 12.3
答案 1 :(得分:2)
std::string str = {'1', '2', '.', '3'};
float var = std::stof(str);