的矢量我有一个包含被分隔的空间整数的一些数字的字符串。例如解析字符串INT
string myString = "10 15 20 23";
我想将其转换为整数向量。所以在这个例子中,矢量应该是平等的
vector<int> myNumbers = {10, 15, 20, 23};
我该怎么办?对不起,愚蠢的问题。
的矢量我有一个包含被分隔的空间整数的一些数字的字符串。例如解析字符串INT
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);
这几乎是现在其他答案的重复。
#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, " "));
}
不需要使用'std :: copy'。因为'std :: vector'有一个需要两个迭代器的构造函数(就像std :: copy一样)。 –
另外* *旧的for循环*的输出应该不包括在这里,因为它*不容易*。 – Wolf
std::string myString = "10 15 20 23";
std::istringstream is(myString);
std::vector<int> myNumbers(std::istream_iterator<int>(is), std::istream_iterator<int>());
如果向量已经然后被定义或代替最后一行
这将是更正确地写入的最后一行如std ::矢量
或者你可以使用初始化列表构造,旨在解决这个问题。 '的std ::矢量
使用'提振:: split_regex' – Blacktempel
@juanchopanza你能亲切地讲解如何分裂成**串* *被认为是相同的分裂成一个***向量int ***? –
@jrok仅仅在分割字符串和拆分字符串的同时转换类型之间存在显着差异。 –