• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt int != std::int;

Object Storage Arubacloud
0 głosów
151 wizyt
pytanie zadane 13 kwietnia 2019 w C i C++ przez niezalogowany

Spotkałem się z nietypowym problemem czy możne ktoś wie z czego to wynika  int z biblioteki std całkiem inny int jak z QT? Dlaczego tak myślę?

Kompilator nie zgłasza błędu, a aplikacja się wywala jak mamy:

void Widget::on_lineEdit_textChanged(const QString &str)
{
     std::string str1= str.toStdString();
     int liczba1=std::stoi(str1); // "int  std";
     ui->lineEdit->setText(QString::number(liczba1)); // " int Qt";
}

a tu wszystko ok std

void Widget::on_lineEdit_textChanged(const QString &str)
{
     std::string str1= str.toStdString();
     int liczba1=std::stoi(str1);
     ui->lineEdit->setText(QString::fromStdString(std::to_string(liczba1)));
}

i tu też Qt,

void Widget::on_lineEdit_textChanged(const QString &str)
{

       int liczba1=str.toInt(nullptr,10);
       ui->lineEdit->setText(ui->lineEdit->text()); // dzięki za tą linijkę   @j23  
}

 

1 odpowiedź

0 głosów
odpowiedź 15 kwietnia 2019 przez Bondrusiek Maniak (61,410 p.)
wybrane 15 kwietnia 2019
 
Najlepsza

Witam,

pierwszą aplikację nie działa gdyż funkcja std::stoi może wyrzucić wyjątek a w tym programie nigdzie go nie łapiesz

terminate called after throwing an instance of 'std::invalid_argument'

what(): stoi

Jeśli podasz tam dobry argument to wszystko powinno być dobrze

Przykład:

    QString strLiczba = "1"; // w przypadku dobrego argumentu liczby to jest dobrze 
    std::string str1 = strLiczba.toStdString();
    int liczba = std::stoi(str1);

    QLineEdit *lineEdit = new QLineEdit();
    lineEdit->setText(QString::number(liczba));
    lineEdit->show();

 

komentarz 15 kwietnia 2019 przez niezalogowany
Fakt przy parokrotnym przebudowaniu programu, nie wykłada się, to ok. Szkoda że nie zapisałem sobie tej wersji gdzieś na pliku. To bym wrzucił. Teraz połączenie miedzy metodami zrobiłem przez składową klasy TWidget, ale jak mi się trafi taka sytuacja to nie omieszkam tu dopisać. Jak opanuje parę programików to wtedy się zajmę wyjątkami.

Podobne pytania

0 głosów
2 odpowiedzi 192 wizyt
pytanie zadane 24 września 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 31 stycznia 2019 w C i C++ przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 269 wizyt

92,674 zapytań

141,575 odpowiedzi

320,045 komentarzy

62,038 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...