konwersja string do int

Krzywy Lew
2016-04-20 11:24
Krzywy Lew
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?

Pozostało 580 znaków

2016-04-20 11:36

Rejestracja: 7 lat temu

Ostatnio: 6 godzin temu

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

edytowany 2x, ostatnio: spartanPAGE, 2016-04-20 11:37

Pozostało 580 znaków

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