我有一个程序需要从 char* 数据里面得到后几位(后3位)数字。可我不知如何解决。因为情况分的比较多。有E06、E-05 (科学计数法),还有正负数之分。例:如0.0000056 、0.0000036 我如何得到56、36这个后几位数?又如4.568323E08 如何得到323这个数字呢?
又如-3.2658954E09 如何得到954这个数字呢?
又如-1.123154545E-09 如何得到554这个数字呢?
拜托各位大侠了!这个问题已经困扰我1个月了。谢谢大侠了!!!!!!!
又如-3.2658954E09 如何得到954这个数字呢?
又如-1.123154545E-09 如何得到554这个数字呢?
拜托各位大侠了!这个问题已经困扰我1个月了。谢谢大侠了!!!!!!!
解决方案 »
- 求一个高速的jpeg压缩库
- SAFE_CHECKWND和SAFE_DELETE分别是干什么用的?
- 武汉招聘
- 我公司希望C++程序加盟;公司在 天津-华苑产业园区 ()
- 菜鸟求救,如何封装控件,急,在线等!解决立刻给分!
- 各位网友帮个忙
- 动态链接库中如何处理消息循环!接受其非模态对话框传来的消息!一定给分!
- sos!如何在win32 dynamic_link library 下调用com
- 高手求救!我在CScrollView的OnDraw()中绘的曲线为什么断断续续?(cqfriend)
- 使用Db Library开发数据库的请进
- 调用PostThreadMessage出错(消息只能与同步操作一起使用)
- mfc的对话框程序为什么不能在其它没有装vc的机器上运行
#include <cstring>
using namespace std;const char* get3(char* dest, const char* src)
{
char *p = strchr(src, 'E');
if(NULL == p)
{
dest[0] = '\0';
return NULL;
}
else
{
strncpy(dest, p - 3, 3);
dest[3] = '\0';
return dest;
}
}int main()
{
char buf[4];
//可以这样
get3(buf, "-3.2658954E09");
cout << buf << endl; //也可以这样
cout << get3(buf, "4.568323E08") << endl;
cout << get3(buf, "-1.123154545E-09") << endl; return 0;
}
#include <iostream>
#include <cstring>
using namespace std;const char* get3(char* dest, const char* src)
{
char *p = strrchr(src, 'E');
if(NULL == p)
{
strncpy(dest, src + strlen(src) - 3, 3);
}
else
{
strncpy(dest, p - 3, 3);
}
dest[3] = '\0';
return dest;}int main()
{
char buf[4];
//可以这样
get3(buf, "-3.2658954E09");
cout << buf << endl; //也可以这样
cout << get3(buf, "4.568323E08") << endl;
cout << get3(buf, "-1.123154545E-09") << endl; return 0;
}
CString GetLast3Char(CString str)
{
int position=0;
if (!(position=str.Find('E')))
return str.Right(3);
else
return str.Mid(position-3,3);
}int main()
{
CString str1="0.0000056";
CString str2="1.123154545E-09";
CString strResult1,strResult2;
strResult1=GetLast3Char(str1);
strResult2=GetLast3Char(str2);
cout <<strResult1<<strResult2<<endl;
}
#include <boost\regex.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;string get3(const char *s)
{
cmatch what;
regex H1("\\d{3}(?=E)");
regex_search(s,what,H1);
return what[0].str();
} void main()
{
cout << get3("4.568323E08") <<endl;
cout << get3("-3.2658954E09") <<endl;
cout << get3("-1.123154545E-09") <<endl;
}
---------------------------------------
结果:
323
954
545