簡體   English   中英

如何對Windows文本框中的數據進行觸發功能

[英]how to do trig functions to data in Windows textboxes

您必須將字符串轉換為雙精度嗎? 如果是這樣的話。 怎么樣?

是否有用於trig的函數按原樣接受文本框字符串數據?

有沒有辦法將文本框中的數據作為數字值而不是字符串提取?

您必須將字符串轉換為雙精度嗎? 如果是這樣的話。 怎么樣?

是。 有很多方法可以做到這一點。

是否有用於trig的函數按原樣接受文本框字符串數據?

不,但是如果您真的想要一個,則可以使用上述問題中描述的一種技術輕松實現此功能。

通常,您需要先驗證用戶輸入以確保輸入正確無誤,並且以數字形式進行的輸入比通過原始字符串進行的驗證要容易得多。

有沒有辦法將文本框中的數據作為數字值而不是字符串提取?

也許; 這完全取決於您使用的GUI框架。

我建議使用strtod

char *str = ...;
const char *end;
double d = strtod(str, &end);
if (*end != '\0')
{
    // questionable data
}
您必須將字符串轉換為雙精度嗎?

是。

如果是這樣的話。 怎么樣?

C ++的方法是使用字符串流。 特別是,您可能需要使用istringstream 一個可行的選擇是遵循C方式,即使用sscanf和適當的格式說明符(“%f”)。

另一個C ++選項是使用boost lexical_cast ,但是在我看來,開始僅將boost用於lexical_cast有點過大。

istringstream示例:

#include <sstream>
// ...
std::istringstream strParser(yourString);
double yourDouble;
strParser>>yourDouble;
if(strParser.fail())
{
    // the string couldn't be converted to a double
}
else if(!strParser.eof())
{
    // the string hasn't been fully consumed; this may or may not be a problem, depending on your needs
}
是否有用於trig的函數按原樣接受文本框字符串數據?

AFAIK不,不需要它們(盡管您可以很輕松地編寫它們)。

有沒有辦法將文本框中的數據作為數字值而不是字符串提取?

WinAPI提供了少數在對話框中使用的此類“便利功能”,但我記得唯一提供這種幫助的是GetDlgItemInt ,顧名思義,它僅適用於整數。

附錄

現在,我看到您正在使用C ++ / CLI(您提到了System :: String):嗯,您應該已經說過,這會大大改變選項。

在托管環境中,最好的選擇是使用Double::Parse方法。 要捕獲格式錯誤的字符串,您應該捕獲Double::Parse引發的異常,或者在調用Double::Parse之前調用Double::Parse Double::TryParse

附錄二

呃,我忘了,因為您使用的是.NET Framework,所以最好使用.NET三角函數( System.Math類)。

據我所知,沒有辦法將文本框直接轉換為兩倍。 您首先需要使用strtod之類的東西轉換為double。

您可以輕松地創建一個泛型函數,該函數接受文本框控件作為參數並返回雙精度(假設文本框包含有效數字)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM