关于C++:将字符串解析为int的向量

parse string to vector of int

本问题已经有最佳答案,请猛点这里访问。

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

1
string myString ="10 15 20 23";

我想把它转换成一个整数向量。所以在这个例子中,向量应该相等

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

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


您可以使用std::stringstream。除其他费用外,您还需要支付额外的费用。

1
2
3
4
5
6
7
8
9
10
11
#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 );


1
2
3
std::string myString ="10 15 20 23";
std::istringstream is( myString );
std::vector<int> myNumbers( std::istream_iterator<int>( is ), std::istream_iterator<int>() );

或者,如果向量已经定义,则替换最后一行

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


这几乎是另一个答案的复制品。

1
2
3
4
5
6
7
8
9
10
11
12
#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,""));
}