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

Qt int != std::int;

0 głosów
71 wizyt
pytanie zadane 13 kwietnia 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 przez Bondrusiek Maniak (51,380 p.)
wybrane 15 kwietnia
 
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 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
1 odpowiedź 56 wizyt
pytanie zadane 31 stycznia w C i C++ przez Milesq Pasjonat (18,010 p.)
0 głosów
1 odpowiedź 47 wizyt
0 głosów
3 odpowiedzi 214 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Pajdas Mądrala (5,990 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

65,755 zapytań

112,393 odpowiedzi

237,319 komentarzy

46,700 pasjonatów

Przeglądających: 138
Pasjonatów: 0 Gości: 138

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...