将字符串读取为命令行参数C++

Read string as command line argument C++

本文关键字:参数 C++ 命令行 字符串 读取      更新时间:2023-10-16

我想读取一个字符串并在C++中解析它,以便从命令行将其转换为双精度并得到矢量中的每个数字

'1.1,2.3,3.4,4.6,5.8,6.9,7.8,8.0,9.9,10.11,11.67'
std::string tempInput;
tempInput = argv[1];
vector <double> example; 
std::vector< std::string > tokens;
while ( std::cin >> tempInput ) {
   example.push_back( <double>( tempInput )  );
}

那么,做这件事最简单的方法是什么/

用空格替换所有逗号:

std::string input = "1.1,2.3,3.4,4.6,5.8,6.9,7.8,8.0,9.9,10.11,11.67";
std::replace(input.begin(), input.end(), ',', ' ');
std::vector<double> result;
std::istringstream inputStream(input);
double value;
while (inputStream >> value)
    result.push_back(value);
inputStream >> std::ws;
if (!inputStream.eof())
    // Handle input error

或者,代替while循环,考虑std::istream_iterator:

std::vector<double> result;
std::istringstream inputStream(input);
std::copy(std::istream_iterator<double>(inputStream),
          std::istream_iterator<double>(),
          std::back_inserter(result));