将字符串解析为 int 的向量

parse string to vector of int

本文关键字:int 向量 字符串      更新时间:2023-10-16

我有一个字符串,其中包含一些用空格分隔的整数。例如

string myString = "10 15 20 23";

我想将其转换为整数向量。所以在示例中,向量应该是相等的

vector<int> myNumbers = {10, 15, 20, 23};

我该怎么做?对不起,愚蠢的问题。

您可以使用

std::stringstream .您需要#include <sstream>除其他包含之外。

#include <sstream>
#include <vector>
#include <string>
std::string myString = "10 15 20 23";
std::stringstream iss( myString );
int number;
std::vector<int> myNumbers;
while ( iss >> number )
  myNumbers.push_back( number );
std::string myString = "10 15 20 23";
std::istringstream is( myString );
std::vector<int> myNumbers( ( std::istream_iterator<int>( is ) ), ( std::istream_iterator<int>() ) );

或者代替最后一行,如果向量已经定义,那么

myNumbers.assign( std::istream_iterator<int>( is ), std::istream_iterator<int>() );

这几乎是现在另一个答案的重复。

#include <iostream>
#include <vector>
#include <iterator>
#include <sstream>
int main(int argc, char* argv[]) {
    std::string s = "1 2 3 4 5";
    std::istringstream iss(s);
    std::vector<int> v{std::istream_iterator<int>(iss),
                       std::istream_iterator<int>()};
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
}