我有一个字符串,其中包含一些用空格分隔的整数。例如
string myString = "10 15 20 23";
我想将其转换为整数向量。因此,在示例中,向量应该相等
vector<int> myNumbers = {10, 15, 20, 23};
我该怎么办?抱歉愚蠢的问题。
答案 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, " "));
}