• 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
66 wizyt
pytanie zadane 13 kwietnia w C i C++ przez fisker Bywalec (2,340 p.)

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 Nałogowiec (49,160 p.)
wybrane 15 kwietnia przez fisker
 
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 fisker Bywalec (2,340 p.)
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ź 47 wizyt
pytanie zadane 31 stycznia w C i C++ przez Milesq Stary wyjadacz (14,200 p.)
0 głosów
1 odpowiedź 46 wizyt
0 głosów
3 odpowiedzi 194 wizyt
pytanie zadane 2 maja 2017 w C i C++ przez Pajdas Mądrala (5,990 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

63,336 zapytań

109,595 odpowiedzi

228,945 komentarzy

44,065 pasjonatów

Przeglądających: 238
Pasjonatów: 14 Gości: 224

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.

...