Я борюсь с моим оператором If с помощью Atoi - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь сделать код клиента билета, и в настоящее время я работаю с отображением моих "клиентов".Я хочу, чтобы это было так: если я наберу «пусто, как ничего, то введите», я хочу, чтобы все мои клиенты в моем собственном файле DTA были на моем выходе.Другими словами, чтобы увидеть, какие клиенты зарегистрированы.

void Customer::DisplayCustomer() {
    cin.getline(buffer, MAXTEXT)
    buffernr = atoi(buffer)   //I need to convert text to numbers. 

    if (buffer[0]=='A' && buffer[1] == '\0')
    // (Here I have a function which displays everything) don't focus on this one
}

Я спрашиваю, что мне нужно набрать, чтобы мой код понял, что я хочу получить оператор ifдля того, кто нажимает Enter, ничего не печатая, запустится моя функция отображения клиента.Я также пытался (если buffer [0] == '\ n'), но это тоже не сработает.

Ответы [ 2 ]

0 голосов
/ 07 апреля 2019

Кажется, вы хотите использовать std::getline() вместо std::istream::getline() для вашего варианта использования:

void Customer::DisplayCustomer() {
    std::string buffer;
    std::getline(std:cin,buffer);
    std::istringstream iss(buffer);
    int buffernr;
    if(!(iss >> buffernr)) { // This condition would be false if there's no numeric value
                             // has been entered from the standard input
                             // including a simple ENTER (i.e. buffer was empty)
         // (Here i have a function which displays everything) don't focus on this 
         //  one
    }
    else {
        // Use buffernr as it was parsed correctly from input
    }
}
0 голосов
/ 07 апреля 2019

Этот код проверяет, является ли буфер пустым

#include <iostream>

int MAXTEXT{300};

int main() {
    char buffer[MAXTEXT];
    std::cin.getline(buffer, MAXTEXT);
    if (buffer[0] == '\0') {
        std::cout << "Empty" << std::endl;
    }
    return 0;
}

Лучшее решение с std::string это

#include <string>
#include <iostream>

int main() {
    std::string buffer;
    std::getline(std::cin, buffer);
    if (buffer.empty()) {
        std::cout << "Empty" << std::endl;
    }
    return 0;
}
...