공백으로 구분 된 정수를 포함하는 문자열이 있습니다. 예를 들어문자열을 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 old * 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>());
또는 대신 마지막 줄의
벡터가 벌써 정의 된 경우
myNumbers.assign(std::istream_iterator<int>(is), std::istream_iterator<int>());
마지막 줄을 std :: vector로 작성하는 것이 더 정확합니다.
또는 해당 문제를 해결하기 위해 설계된 이니셜 라이저 목록 구성을 사용할 수 있습니다. 'std :: vector
사용'부스트 : split_regex' – Blacktempel
@juanchopanza 당신이 친절하게 설명 할 수있는 방법 ** 문자열로 분할 * *는 int ***의 *** 벡터로 분할하는 것과 동일하게 간주됩니까? –
@jrok 단순히 문자열을 분할하고 동시에 문자열을 변환하는 것과 유형을 변환하는 것 사이에는 큰 차이가 있습니다. –