2017-05-16 22 views
-3

我使用gtkmm與C++,但我有一個問題。這裏是我的代碼:如何擁有。而不是,

#include <gtkmm/box.h> 
#include <gtkmm/entry.h> 
#include <gtkmm/main.h> 
#include <gtkmm/window.h> 

int main(int argc, char* argv[]) { 
    Gtk::Main app(argc, argv); 
    Gtk::Window window; 
    Gtk::VBox boxv(false, 10); 
    Gtk::Entry entry1; 
    boxv.pack_start(entry1); 
    Gtk::Entry entry2; 
    boxv.pack_start(entry2); 
    entry1.signal_activate().connect([&entry2, &entry1](){ 
std::string a = entry1.get_text(); 
double c = std::atof(a.c_str()); 
c = 45*c; 
std::string s;{ 
std::ostringstream oss; 
oss << c; 
s = oss.str(); 
} 
entry2.set_text(s); 


}); 
    window.add(boxv); 
    window.show_all(); 
    Gtk::Main::run(window); 
    return 0; 
} 

問題是這樣的:當我在比如10我得到45 * 10的取值範型。如果我輸入10.20,我也得到45 * 10而不是45 * 10.20。我試圖輸入10,20,在這種情況下我得到45 * 10,20,但我想使用。而不是, 你有這個解決方案嗎?

非常感謝你!!!!

回答

5

聽起來像是您的區域設置設置爲其中小數點分隔符爲,。要強制.作爲分隔符,您可以將您的數字區域設置爲C:使用atof

#include <clocale> 
//... 
setlocale(LC_NUMERIC, "C"); 

之前。

相關問題