将字符串解析为int的向量

时间:2013-12-18 13:07:00

标签: c++ string vector

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

string myString = "10 15 20 23";

我想将其转换为整数向量。因此,在示例中,向量应该相等

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

我该怎么办?抱歉愚蠢的问题。

3 个答案:

答案 0 :(得分:25)

您可以使用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 );

答案 1 :(得分:6)

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>() );

答案 2 :(得分:0)

这几乎与其他答案重复。

#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, " "));
}