parse string to vector of int
本问题已经有最佳答案,请猛点这里访问。
我有一个字符串,它包含一些用空格分隔的整数。例如
1 | string myString ="10 15 20 23"; |
我想把它转换成一个整数向量。所以在这个例子中,向量应该相等
1 | vector<int> myNumbers = {10, 15, 20, 23}; |
我该怎么做?对不起,这个愚蠢的问题。
您可以使用
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,"")); } |