Wpis z mikrobloga

@Defined: @Heibonna: @elfo: Właśnie się zorientowałem, że "|" nie zawsze musi występować tzn albo wczytujesz "4124|4124" albo "132213", więc opcja z wczytywaniem stringa i późniejszy ewentualny podział na substringi będzie odpowiedniejszy.
  • Odpowiedz
@Heibonna: sscanf zwraca liczbę poprawnie pobranych wartości przekazanych w argumencie, więc można dać:

int x = sscanf(s.c_str(), "%d|%d", &a, &b);
I jak x == 1, to pobrało tylko a, jak x == 2 to porało a i b (jak 0, to string nie ma liczb).
  • Odpowiedz
@Heibonna: C++17 masz najszybsze std::from_chars, w twoim przypadku:

int a,b;
auto result_a = std::from_chars(str.data(),str.data()+str.size(),a);
auto result_b = std::from_chars(result_a.ptr+1,str.data()+str.size(),b);
jeżeli nie jesteś pewien stringa, to jak tam
  • Odpowiedz