2015-10-27 3 views
-4

Я пытаюсь получить номер 001 из строки UID001 (Пользователь всегда будет вводить «UIDnnn»). Я пробовал использовать cin.get и cin.ignore с разделителями, но без результатов. Каков наиболее эффективный способ извлечения целых чисел из строки?Извлечение целых чисел из строки ID

+3

Как мы должны знать? Всегда ли это «UIDnnn»? Если это так, подстрока сделает это. – John3136

+1

Получите номер с 'std :: string :: substr()' и используйте 'std :: stoi()', чтобы преобразовать его в числовое значение. –

+0

Извините! Я забыл упомянуть, что всегда будет «UIDnnn» – Cheezdue

ответ

0

Ну, простейшее решение, совместимое со стандартом C++, похоже, как указано в моем комментарии.

Считать значение идентификатора в качестве std:string:

std::string ID; 
std::cin >> ID; 

Получить подстроку с номером части:

std::string numpart = ID.substr(3); 

Преобразовать его в числовое значение:

int idnum = std::stoi(numpart); 
+1

Спасибо, этот метод работал для меня! – Cheezdue

0

Это одно из тех мест, которое scanf и компания действительно хорошо работают:

scanf("UID%d", &number); 

С iostreams это немного уродливее, но я бы рассмотреть что-то вроде:

for (int i=0; i<3; i++) { 
    char ch; 
    cin.get(ch); 
} 
cin >> number; 
+0

Вы можете использовать iostreams для чтения в строке, а затем проанализировать с помощью 'sscanf()'. – Davislor

Смежные вопросы