【发布时间】:2020-10-04 17:23:48
【问题描述】:
我有一个从命令行输入多个字符串和数字变量的程序。因为我想将少量输入转换为数字类型,所以我一直在使用std::stringstream,正如learncpp 所建议的那样。目前,我的代码如下所示:
main.cpp
int main(int argc, char* argv[]) {
if (argc != 7)
{
std::cout << "Execute the program in the following format:\n";
std::cout << ".\segment inputImage outputDir color k sigma minSize\n";
std::cout << "Exiting program\n";
std::exit(1);
}
float gaussianBlur, kValue;
int minimumComponentSize;
std::filesystem::path path = std::filesystem::u8path(argv[1]);
std::string outputFolder = argv[2];
std::string color = argv[3];
std::stringstream convert{argv[4]};
if (!(convert >> gaussianBlur))
{
gaussianBlur = 1.5; // default value
}
std::stringstream convertK{argv[5]};
if (!(convertK >> kValue))
{
kValue = 900; // default value
}
std::stringstream convertMin{argv[6]};
if (!(convertMin >> minimumComponentSize))
{
minimumComponentSize = 900;
}
....
如您所见,我正在为要转换为数字类型的每个参数创建一个stringstream 变量。我无法将另一个值重新分配给 stringstream 变量。有没有办法从单个stringstream 转换所有参数?有没有更好的方法来做到这一点?
【问题讨论】:
标签: c++ c++17 command-line-arguments stringstream