У меня есть небольшая проблема, я могу понять эту ошибку - PullRequest
0 голосов
/ 26 сентября 2019

Я создаю программу, в которой мне нужно войти в учетную запись и увидеть баланс и дату оплаты, но при запуске произошла ошибка.Это ошибка, с которой я сталкиваюсь: [Ошибка] не может передать объекты нетривиально копируемого типа 'std :: string {aka class std :: basic_string}' через '...'

Я пытался искать в Интернетео том, как исправить, но все еще не работает

Вот мой код:

#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int main() {
    string names[2] = { "MARK", "EMILY" }, Ddate[2] = { "10/04/19","10/06/19" };
    int bal[2] = { 4500,6500 }, id_num[2] = { 1810784, 1810783 }, pword[2] = { 117611,594356 }, idnum, pw,i = 0;

    char check_bal,temp;
    printf("WELCOME TO STUDENT BILLING SYSTEM \n");
    printf("Would you like to check your balance? Y/N\n");
    scanf( "%c", &check_bal);
    temp = toupper(check_bal);
    check_bal = temp;

    if (check_bal == 'Y') {
        printf("ENTER YOUR ID NUMBER: ");
        scanf("%i", &idnum);
        printf("ENTER YOUR PASSWORD: ");
        scanf("%i", &pw);
        while (true) {
            if (idnum == id_num[i])
                break;
            else
                continue;
        }
        while (true) {
            if (pw == pword[i])
                break;
            else
                continue;
        }
        printf("HI %s, your balance is %i and the DUE DATE is: %s \n", names[i],bal[i],Ddate[i]);
}
else
    system("EXIT");

system("PAUSE");
return 0;

}

1 Ответ

0 голосов
/ 26 сентября 2019

Код прекрасно компилируется в g ++, но выводит мусор.С g ++ -Wall вы получите разумное предупреждение:

warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘std::__cxx11::string’ {aka ‘std::__cxx11::basic_string<char>’} [-Wformat=]

Это версия g ++ 8.3.0.

Код, который может быть спасен следующим образом:

printf("HI %s, your balance is %i and the DUE DATE is: %s \n", names[i].c_str(),bal[i],Ddate[i].c_str());

Но, пожалуйста, обратите внимание на комментарии, которые рекомендуют использовать стиль c ++ io.

...