看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《wope (獨立黑色色彩)》之銘言: : 開發平台: VS2005.net : 目前狀況: : 我目前也只會字很簡單的把textBox裡的東西轉成double : 想下一個判斷式,如果Textbox中不是數字或沒輸入字可以回傳個東西 : if內的判斷不會寫@@ : int A=0; : if(Textbox中不是數字或沒輸入字){ : A=1; : } : else{ : no1 = Convert::ToDouble(textBox1->Text); : } 如果你要判斷string裡面是不是正常的數字 比較好的方法是用Regular Expression 不過既然你用的是C++/CLI, 可以用TryParse直接搞定 你的程式碼寫A=1, 所以我這邊預設值就用1了 double ParseDouble(String^ str, double defaultValue=1.0) { double result; if(double::TryParse(str, result)) { return result; } return defaultValue; } //用法 no1 = ParseDouble(textBox1->Text); 同場加映, C的轉換法: double StringToDouble(const char* str, double defaultValue) { char* endptr = 0; double result = strtod(str, &endptr); if(endptr == str) { return defaultValue } if(*endptr != 0) { return defaultValue } return result; } //C++/CLI //using namespace System::Runtime::InteropServices; char* str = (char*)Marshal::StringToHGlobalAnsi(textBox1->Text).ToPointer(); no1 = StringToDobule(str, 1.0); Marshal::FreeHGlobal((IntPtr)str); 不過考慮到StringToHGlobalAnsi會copy一次字串 加上會多出一些Marshalling的內部呼叫 在C++/CLI這種做法沒什麼好處, 直接用.NET的library就好了... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.141.9