Веб-сайт Drupal 6 сохраняет значения профиля в объект user-> data, а не в таблицу profile_fields, как мне это предотвратить, чтобы я мог использовать их в представлениях

Вы можете проверить это следующим образом:

int x;
cin >> x;

if (cin.fail()) {
    //Not an int.
}

Кроме того, вы можете продолжать вводить ввод, пока не получите int через:

#include <iostream>



int main() {

    int x;
    std::cin >> x;
    while(std::cin.fail()) {
        std::cout << "Error" << std::endl;
        std::cin.clear();
        std::cin.ignore(256,'\n');
        std::cin >> x;
    }
    std::cout << x << std::endl;

    return 0;
}

EDIT: Чтобы отправить комментарий ниже относительно ввода типа 10abc, можно было бы изменить цикл, чтобы принять строку в качестве входа. Затем проверьте строку для любого символа, а не числа, и соответствующим образом обработайте эту ситуацию. В этой ситуации не нужно очищать / игнорировать входной поток. Проверка строки - это просто цифры, преобразование строки обратно в целое. Я имею в виду, это было как раз от манжеты. Возможно, лучший способ. Это не сработает, если вы принимаете float / doubles (нужно добавить «.» В строку поиска).

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&st);
    std::cout << inputAsInt << std::endl;
    return 0;
}
0
задан Pez 25 February 2015 в 21:28
поделиться