的矢量我有一個包含被分隔的空間整數的一些數字的字符串。例如解析字符串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僅僅在分割字符串和拆分字符串的同時轉換類型之間存在顯着差異。 –