⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t-locale.cc

📁 a very popular packet of cryptography tools,it encloses the most common used algorithm and protocols
💻 CC
字号:
/* Test locale support in C++ functions, or attempt to do so.Copyright 2001, 2004 Free Software Foundation, Inc.This file is part of the GNU MP Library.The GNU MP Library is free software; you can redistribute it and/or modifyit under the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.The GNU MP Library is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General PublicLicense for more details.You should have received a copy of the GNU Lesser General Public Licensealong with the GNU MP Library; see the file COPYING.LIB.  If not, write tothe Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA. */#include "config.h"#include <strstream>#include <stdio.h>#include <stdlib.h>#include <string.h>#if HAVE_LOCALE_H#include <locale.h>    /* for lconv */#endif#include "gmp.h"#include "gmp-impl.h"#include "tests.h"using namespace std;#if HAVE_LOCALECONVchar *decimal_point;/* Replace the libc localeconv with one we can manipulate. */struct lconv *localeconv (void){  static struct lconv  l;  l.decimal_point = decimal_point;  return &l;}voidcheck_input (void){  static char *point[] = {    ".", ",", "xy", "xyz", "xyz***"  };  static const struct {    const char  *str;    double      d;  } data[] = {    { "1%s",   1.0 },    { "1%s0",  1.0 },    { "1%s00", 1.0 },    { "%s5",    0.5 },    { "0%s5",   0.5 },    { "00%s5",  0.5 },    { "00%s50", 0.5 },    { "1%s5",    1.5 },    { "1%s5e1", 15.0 },  };  mpf_t   f;  double  d;  mpf_init (f);  for (size_t i = 0; i < numberof (point); i++)    {      decimal_point = point[i];      for (int neg = 0; neg <= 1; neg++)        {          for (size_t j = 0; j < numberof (data); j++)            {              char   str[128];              strcpy (str, neg ? "-" : "");              sprintf (str+strlen(str), data[j].str, decimal_point);              mpf_set_d (f, 123.0);              istrstream i (str);              if (! (i >> f))                {                  printf ("operator>> input error\n");                  printf ("  point  %s\n", decimal_point);                  printf ("  str    %s\n", str);                  abort ();                }              d = data[j].d;              if (neg)                d = -d;              if (mpf_cmp_d (f, d) != 0)                {                  printf    ("operator>> wrong result\n");                  printf    ("  point  %s\n", decimal_point);                  printf    ("  str    %s\n", str);                  mpf_trace ("  f", f);                  printf    ("  d=%g\n", d);                  abort ();                }            }        }    }  mpf_clear (f);}intmain (void){  tests_start ();  {    mpf_t  f;    mpf_init (f);    decimal_point = ",";    mpf_set_d (f, 1.5);    ostrstream  got;    got << f << '\0';    mpf_clear (f);    if (strcmp (got.str(), "1,5") != 0)      {        printf ("Test skipped, replacing localeconv doesn't work\n");        goto done;      }  }  check_input (); done:  tests_end ();  exit (0);}#elseintmain (void){  printf ("Test skipped, no locale support\n");  exit (0);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -