在 C++ main 中将浮点表作为参数传递

passing table of floats as argument in c++ main

本文关键字:参数传递 C++ main      更新时间:2023-10-16

我有一个 c++ 程序,我希望 main (argv[1]) 的第一个参数对应于浮点表。有可能做到吗??

我正在考虑将我的浮点数用空格分隔的绳子放入一根绳子(例如"1.12 3.23 4.32 1.1 ...")有没有办法自动将这样的字符串转换为浮点数表?如果我理解得很好,atof 函数会将字符串转换为双精度。因此,似乎可以使用空格拆分我的字符串,然后使用 atof 转换每个部分。这个选项对我来说似乎不是很有效?此外,它还返回双精度而不是浮:(

那么,有没有更好的方法将浮点表作为 c++ 程序的参数传递?

谢谢

stringstream既可以在空格处进行拆分,也可以解析为浮点数。

std::stringstream ss(the_string);
std::vector<float> v(std::istream_iterator<float>(ss),
                     (std::istream_iterator<float>()));
                   // the extra parentheses here are ugly but necessary :(

如何获取包含数据的字符串取决于它的大小以及它应该来自哪里。请记住,在许多系统中,传递给程序的参数已经被空格分割,将每个部分放在不同的argv元素中。

将其保存在文本文件中,然后在程序启动时从文件中读取它。我不值得将其作为命令行参数传递。

main() 参数列表是原样。您可以将数字字符串作为参数传递给程序。主函数必须解析其参数。

当您想传递以空格分隔的数字列表时argv[1]您可以使用 strtok 函数获取单个数字字符串,并且必须将其传递给转换函数。

当转换函数返回双精度值时,您应该检查结果是否可以由浮点数表示,并将值转换为浮点变量。但我会考虑使用双倍作为内部表示。

除了辛格的回答:命令行应该主要由人使用,而不是计算机。如果确实需要值,请使用配置文件。您始终可以使用人类可读的格式。