konwersja string do int

0
 #include <iostream>
#include <vector>
#include <sstream>

int main()
{
	std::string a = "3 a 43 2042 12";
	std::vector<int> vec;
	std::istringstream iss(a);
	int temp = 0;
	while(iss>>temp){
		if(iss.fail()){
			iss.clear();
			iss.ignore(a.size(),' ');
		}
		vec.push_back(temp);
	}
	for(auto& it : vec){
		std::cout<<it<<" ";
	}
}

Problem jest to że gdy w stringu nie ma litery wszystko działa ale gdy się pojawia to,wczytuje tylko pierwszą cyfre. Jak rozwiązać ten problem?

1

Na szybko:

#include <iostream>
#include <vector>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <stdexcept>

int main(){
	std::vector<int> data;
	
    std::string source = "3 a 43 2042 12";
    std::istringstream input(source);
    
    std::string token;
    while(input >> token){
    	try {
    		int num = std::stoi(token);
    		data.push_back(num);
    	}
    	catch(const std::invalid_argument &ex) {}
    }
    for(auto const &el: data){
        std::cout << el << " ";
    }
}

http://ideone.com/mxiRNQ

O twoim problemie:

int temp = 0;
while(iss>>temp) /* ... */

Jeżeli nie uda się wczytać inta kończy pętle :) tyle

1 użytkowników online, w tym zalogowanych: 0, gości: 1