繁体   English   中英

将Xaml文本框转换为double,但是如何验证用户输入是否为double,而不是Windows 8应用程序的c ++中的字符串

[英]Converting Xaml textbox to double, but how to validate that the user input is double not a string in c++ for the windows 8 app

这就是我为xaml中的文本框准备的内容。

<TextBox x:Name="number1" HorizontalAlignment="Left" Height="85" Margin="115,239,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="328" FontSize="60" TextAlignment="Center"/>

这就是我要从文本框中获取文本的内容:

void Simple_Calculator_4_Kids::MainPage::add_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
String^ str1 = txtNumberToMultiply->Text; 
wstring ws1( str1->Data());
wstringstream convertor; 
double ws1_d;
convertor << ws1; 
convertor >> ws1_d; 
ws1_d = ws1_d + 2.2; 
}

我不明白如何添加一种方式来验证文本框中的内容实际上是双精度而不是字母字符串或为空。 我将如何添加一种方法来验证文本框中的内容是否为重复值呢? 这是使用Visual Studio 2012 for Windows 8应用程序的C ++。

使用C运行时库中的strtod(将字符串转换为双精度值)。 根据文档,对照功能测试您的文本输入并检查错误。 Windows Store应用程序通过C ++和CRT支持strtod(和朋友)。

http://msdn.microsoft.com/zh-CN/library/kxsfc1ab(v=vs.110).aspx

我花了一段时间才弄清楚wstring如何使用char16保持输入,因此我编写了这段代码。 它只是检查期间和数字。

bool isValidInput(String^ str){
    int decimalX = 0;
    wstring ws(str->Data());
    int strSize = ws.length();
    if(strSize<1)
        return false;
    else{
        for(int i=0;i<strSize;i++){
            if(ws[i]==46||ws[i]==48||ws[i]==49||ws[i]==50||ws[i]==51||ws[i]==52||ws[i]==53||ws[i]==54||ws[i]==55||ws[i]==56||ws[i]==57){
                if(ws[i]==46){
                    decimalX++;
                    if(decimalX>1)
                        return false;
                }
            }
            else
                return false;
        }
        return true;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM