Changeset 1157 in Sophya for trunk/SophyaLib/BaseTools/mutyv.cc
- Timestamp:
- Aug 29, 2000, 6:11:42 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/BaseTools/mutyv.cc
r1080 r1157 32 32 33 33 34 static void mutyv_decodestr(const char * si, double& r, double& im); 35 34 36 /* --Methode-- */ 35 37 MuTyV::MuTyV(MuTyV const & a) … … 51 53 typ = 'S'; 52 54 strv = new string(s); 53 dv = dv_im = 0.; 54 sscanf(s, "%lg %lg", &dv, &dv_im); 55 mutyv_decodestr(s, dv, dv_im); 55 56 iv = (int_8)dv; 56 57 } … … 61 62 typ = 'S'; 62 63 strv = new string(s); 63 dv = dv_im = 0.; 64 sscanf(s.c_str(), "%lg %lg", &dv, &dv_im); 64 mutyv_decodestr(s.c_str(), dv, dv_im); 65 65 iv = (int_8)dv; 66 66 } … … 80 80 typ = 'S'; 81 81 strv = new string(s); 82 dv = dv_im = 0.; 83 sscanf(s, "%lg %lg", &dv, &dv_im); 82 mutyv_decodestr(s, dv, dv_im); 84 83 iv = (int_8)dv; 85 84 return(s); … … 91 90 typ = 'S'; 92 91 strv = new string(s); 93 dv = dv_im = 0.; 94 sscanf(s.c_str(), "%lg %lg", &dv, &dv_im); 92 mutyv_decodestr(s.c_str(), dv, dv_im); 95 93 iv = (int_8)dv; 96 94 return(s); … … 105 103 if (typ == 'I') sprintf(buff,"%ld", (long)iv); 106 104 else if (typ == 'D') sprintf(buff,"%.20g", dv); 107 else if (typ == 'Z') sprintf(buff," %.20g %.20g i", dv, dv_im);105 else if (typ == 'Z') sprintf(buff,"(%.20g , %.20g)", dv, dv_im); 108 106 else buff[0] = '\0'; 109 107 return(string(buff)); … … 112 110 113 111 112 static void mutyv_decodestr(const char * si, double& r, double& im) 113 // decodage d'une chaine contenant une ou deux valeurs 114 { 115 r = im = 0.; 116 string s = si; 117 size_t l = s.length(); 118 size_t p = s.find_first_not_of(" ()\t",0); 119 if (p >= l) return; 120 size_t q = s.find_first_of(" ()\t",p+1); 121 122 123 if (!isdigit(s[p]) && !(s[p] == '+') && !(s[p] == '-') ) 124 return; 125 r = atof(s.substr(p,q-p).c_str()); 126 127 p = s.find_first_not_of(" ()\t",q+1); 128 if (p >= l) return; 129 q = s.find_first_of(" ()\t",p+1); 130 if (!isdigit(s[p]) && !(s[p] == '+') && !(s[p] == '-') ) 131 return; 132 im = atof(s.substr(p,q-p).c_str()); 133 } 114 134 115 135 116 136 137
Note:
See TracChangeset
for help on using the changeset viewer.