lee中文怎么读.vc数据类型转换大全三
发布: 2010-1-18 20:44 | 作者: admin | 查看: 11次
你sizeof()得出的数值事多大
11关于sprintf类型转换的问题sprintf(buf,"select price from ls01 where p_date>='%'",t_date)其中t_date是CTime类型
%后面应该是什么呢?%s是String类型,%c是char,那么CTime型对应的是什么呢? 回复人: yakai(日落长河) (2001-12-17 17:45:47) 得0分 sprintf(buf,"select price from ls01 where p_date>='%S'",(LPCSTR)t_date.Format( "%A, %B %d, %Y" ));如果不行
就char temp[50];CString str=t_date.Format( "%A, %B %d, %Y" );strcpy(temp,(LPCSTR)str);sprintf(buf,"select price from ls01 where p_date>='%S'",temp);CTime::Format返回CString 往返复人: loh(乐啸天涯海角) (2001-12-17 17:52:57) 得0分 waitdon't know 往返复人: masterz() (2001-12-17 20:21:05) 得0分 SQL语句中日期要写成字符串"yyyymmdd" 12类型转换 unsigned int <==>CString??来回复次数:8发表时间:2001-12-17 10:25:23unsigned int f;//unsigned int 0~4294967295CString g;f=2300000000;g.Format("%d",f);AfxMessageBox(g);出错 回复人: ydogg(灰毛兔频频) (2001-12-17 10:31:29) 得0分 unsigned int f;//unsigned int 0~4294967295CString g;f=2300000000;g.Format("%d",f);MessageBox(g);//使用AfxMessageBox
需要窗口的句炳参数往返复人: asdmusic8(asdmusic8) (2001-12-17 10:35:15) 得0分我 AfxMessageBox(g); 和MessageBox(g); 都不错错的是g.从 2300000000=》1994967296往返复人: asdmusic8(asdmusic8) (2001-12-17 10:36:10) 得0分 是2300000000=》-1994967296 类型转换错回复人: ydogg(灰毛兔频频) (2001-12-17 10:37:54) 得6分 g.Format("%u",f);来回复人: asdmusic8(asdmusic8) (2001-12-17 10:40:24) 得0分 to dgsnmpoperate 那怎么从 CString ==>>unsigned int 往返复人: kingfish(今飞) (2001-12-17 10:42:10) 得6分 既然是 unsigned int,超过 0x7f000000 (2130706432) 当然不能用 %d (signed int)用%u 往返复人: kingfish(今飞) (2001-12-17 10:44:57) 得8分 CString ==>>unsigned int char *p = (LPSTR)(LPCSTR) g;f = atoi(p); 13static_cast、dynamic_cast 和直接类型转换(如 (void *)p )的区别?发表时间:2001-12-14 9:31:13先拷贝MSDN中的一小段话:class B { ... };class C : public B { ... };class D : public C { ... };void f(D* pd){C* pc = dynamic_cast(pd); // ok: C is a direct base class// pc points to C subobject of pd B* pb = dynamic_cast(pd); // ok: B is an indirect base class// pb points to B subobject of pd ...}我已经知道 static_cast 和 dynamic_cast 的作用
但MSDN中并没有提到这两个操作符与直接类型转换如void f(D* pd){C* pc = (C*)(pd);B* pb = (B*)(pd); ...}的不同啊不知道那位知道的告诉一声,在此不胜感谢,50分奉上来回复贴子:ysdesigned(清泉) (2001-12-14 10:03:07) 得0分 static_cast、dynamic_cast 代替简单的强制转 化,从而消除多继承带来的歧 义使用这两个运算符 号,我 们可以在对象运行过程中获取对象的类型信 息dynamic_cast 用于多态类型的转换static_cast 用于非多态类型的转换回复人: masterz() (2001-12-14 10:05:48) 得0分 static_cast<...>compile时能发现不正确的指针类型转换dynamic_cast<...>运行时如果发现是不正确的指针类型转换会返回NULL(void*)强制转换,如果是不正确的指针类型转换
没有办法检查,不如上面2中安全 往返复人: meady() (2001-12-14 11:29:05) 得0分 类型安全 往返复人: bluecrest(为什么我滴VC还是那么的菜) (2001-12-14 11:45:34) 得0分 com技术内幕介绍过我刚看完就忘了 14byte数据类型转换成int型??我用byte型读入一组数据想把他转成int型入行运算如何做呢?如果再把int型转回byte又怎么实现呢? 回复人: louifox(兰陵笑笑生) (2001-12-6 9:18:38) 得蚌埠 香薰耳烛0分 用下面这些宏:WORD MAKEWORD(BYTE bLow, BYTE bHigh );BYTE LOBYTE(WORD wValue );BYTE HIBYTE(WORD wValue );来回复人: chskim(大刀阔斧) (2001-12-6 9:21:04) 得0分 int i;BYTE b;b=128;i=(int)b;往返复人: nannet(似的) (2001-12-6 9:38:24) 得0分 这个宏怎么用呀?有没有简单一点儿的
我现在能把BYTE 转成INT 型了
再转来回去直接赋值可以吗? 往返复人: louifox(兰陵笑笑生) (2001-12-6 9:46:24) 得20分 WORD wa;BYTE ba=32,bb=64;wa=MAKEWORD(ba,bb);...WORD wa=1234;BYTE ba,bb;ba=LOBYTE(wa);bb=LOBYTE(wa);回复人: nannet(似的) (2001-12-6 9:54:55) 得0分 问题解决了
多谢各位 15类型转换的问题
unsigned int --> lptstr/lpctstr??发表时间:2001-8-7 23:49:41如果强制转换的话
会出现致命错误
有什么好的办法呢?能列举一些其他的办法吗?谢谢大虾! 回复人: AlphaOne(总是第一个倒下) (2001-8-8 0:02:43) 得5分 你为什么要强行转换呢?如果你是要把int 的值作为 lptstr/lpctstr 的内容的话,可以用CString:unsigned int a = 100;LPCTSTR lpText;CString str;str.Format("%d",a);lpText = (LPCTSTR)str;来回复人: tryibest(编の魂) (2001-8-8 8:20:20) 得5分 wsprintf(str,"%u",ui); 来回复人: zzh() (2001-8-8 9:04:39) 得5分 这种情况不需要进行强制转换,直接使用wsprintf就可以了 回复人: GJA106(中文字符) (2001-8-8 10:10:51) 得5分 unsigned int m_na=22;LPTSTR lptstr;wsprintf(lptstr,"%u",m_na);16关于COM类型转换问题??我定义了两个变量,一个是void *piaRef=new unsigned char[1000];另一个是m_Temp=new CComVariant();我的问题是如何将piaRef中的值COPY到m_Temp中 回复人: nichang() (2001-11-21 15:34:04) 得0分 CComBSTR bsRef=piaRef;m_Temp=bsRef.copy() 来回复人: VincentChin(瘟神) (2001-11-21 17:04:24) 得0分 CComBSTR bsRef=piaRef;//error C2440: 'initializing' : cannot convert from 'void *' to 'class ATL::CComBSTR'm_Temp=bsRef.copy();//error C2440: '=' : cannot convert from 'unsigned short *' to 'class ATL::CComVariant *' 回复人: nichang() (2001-11-21 17:14:28) 得0分 将void*改为unsigned char * 来回复人: VincentChin(瘟神) (2001-11-21 17:22:22) 得0分 我用CComBSTR bsRef=(unsigned char*)piaRef
也不行吗? 往返复人: VincentChin(瘟神) (2001-11-21 17:28:06) 得0分 会报错:error C2440: 'type cast' : cannot convert from 'unsigned char *' to 'class ATL::CComBSTR' 来回复人: nichang() (2001-11-22 9:12:14) 得0分 m_Temp=::SysAllocString((OLECHAR *)piaRef) 往返复人: VincentChin(瘟神) (2001-11-22 10:43:07) 得0分 //error C2440: '=' : cannot convert from 'unsigned short *' to 'class ATL::CComVariant *' 来回复人: VincentChin(瘟神) (2001-11-22 11:22:35) 得0分 m_Temp=new CComVariant(::SysAllocString(OLECHAR *)piaRef));没有出错,但是我的m_Temp是COM组件中的一个PROPERTY,我想返来回的是unsigned char类型(单字节)
但经过上述转换后
就不再是单字节了呀!怎么办? 回复人: jiangsheng(蒋晟) (2001-11-22 11:36:58) 得0分 把这个属性的类型改成BSTR 往返复人: GrayWhite(灰白) (2001-11-22 12:01:09) 得0分 m_Temp = new CComVariant((char*) piaRef);就可以了VB就是用的BSTR,你要给谁用阿?VC不用VARIANT的 回复人: GrayWhite(灰白) (2001-11-22 12:18:18) 得19分 哦,我明白了
你要各字节数组:SAFEARRAY *psa = SafeArrayCreateVector(VT_UI1, 0, 1000);if (!psa)_com_issue_error(ERROR_NOT_ENOUGH_MEMORY);HR ESULT hrfor (long i = 0; i < 2; i ){if (FAILED (hr = SafeArrayPutElement(psa, &i, piaRef i)))_com_issue_error(hr);}_variant_t va; // include va.vt = VT_ARRAY | VT_UI1;va.parray = psa;m_Temp = new CComVariant(va); 回复人: VincentChin(瘟神) (2001-11-22 14:21:08) 得0分 SafeArrayPutElement(psa, &i, piaRef i)//error C2036: 'void *' : unknown size 往返复人: VincentChin(瘟神) (2001-11-22 14:46:05) 得0分 To GrayWhite:为什么要for(long i=0;i<2;i )? 来回复人: nichang() (2001-11-22 15:16:35) 得0分 到底你想怎样转换嘛,是将数组内的值拷贝到CComVariant中存为字符串吗? 来回复人: VincentChin(瘟神) (2001-11-22 15:28:35) 得0分 我是想把piaRef中的值照原样返回给其它程序使用我正在做的暗香 丽达是一个COM组件谢谢各位! 往返复人: nichang() (2001-11-22 15:34:40) 得10分 unsigned char *s=new unsigned char[1000];strcpy((char*)s,"1234");//可以用你自己方法设置s中的值BSTR bstrS;oleS=A2WBSTR((char*)s);//将char*转换成BSTR类型CComVariant comVT;comVT=oleS;//将BSTR转成CComVariant,这里一步也可
comVT=A2WBSTR((char*)s);回复人: VincentChin(瘟神) (2001-11-22 16:54:07) 得0分 谢谢你!但我还有一个问题
就是如果在s中有'\0'之类的东西我该怎么返来回呢?char *遇到'\0'会认为到头了完整的设计是这样的
我定义一个void * 用来从一个外部设备获取数据
该数据应该是unsigned char,我想把这个返往返的数据作为属性传出
让其它应用使用(如VB) 往返复人: nichang() (2001-11-22 17:18:09) 得0分将'\0'转换成其它如'\1'就OK了, 来回复人: jiangsheng(蒋晟) (2001-11-22 18:07:16) 得0分 用字符串数组 回复人: VincentChin(瘟神) (2001-11-23 15:54:39) 得0分 谢谢各位的回复!俺滴问题解决了!如下:SAFEARRAY *psa = SafeArrayCreateVector(VT_UI1, 0, 1000);if (!psa)return S_FALSE;HRESULT hr;for (long i = 0; i < 1000; i )if (FAILED (hr = SafeArrayPutElement(psa, &i, ((unsigned char*)piaRefTemplate) i)))return S_FALSE;VARIANT va;va.vt = VT_ARRAY | VT_UI1;va.parray = psa;CComVariant *m_Temp = new CComVariant();m_Temp->Copy(&va);17类型转换 static_cast reinterprete_cast 的区别??static_cast reinterprete_cast 的区别 回复人: tar(GPS) (2001-11-21 10:06:41) 得0分 static_cast会检查转换类型健的相关性如果没有的画会有编译错误reinterprete_cast就是硬转了 往返复人: tigerwoods(tao) (2001-11-21 12:28:19) 得0分 是否可以这样理解:在多重继承中
static_cast可实现对象指针的移动,从而指向正确的父类对象部分,而reinterprete_cast不作偏移? 回复人: liu_feng_fly(我恨死驱动程序了
哎,就是为了混口饭吃) (2001-11-21 12:35:14) 得0分 在多重继承中可以用dynamic_cast啊 18那如何取得CString中的字符串??回复人: nichang() (2001-11-5 17:06:00) 得0分 =(LPCTSTR)CString变量 往返复人: snake1122(领悟) (2001-11-5 17:12:16) 得0分 方法太多了:GetAt,Left,Mid,Right等等
就看你怎么取了! 往返复人: dusb(保时捷) (2001-11-5 17:34:29) 得0分 可是不管是GetAt
Left
Mid,Right返往返类型都是CString,还是不能用
我是要取其中的字符串,奇怪的是,VC中没有string类型(我要的字符串是给树型控件中的分支名称) 回复人: Alps_lou(云飞扬) (2001-11-5 17:41:36) 得0分 有string类型的啊,要包含 往返复人: luxes() (2001-11-5 17:42:19) 得0分 加上(LPCTSTR)
相当于一个const char *了,还不能用? 回复人: wt007(tt) (2001-11-5 17:48:33) 得0分 GetBuffer 往返复人: espon99() (2001-11-5 17:54:06) 得20分 (LPSTR)(LPCTSTR)往返复人: ineedyou(古寺僧) (2001-11-5 17:59:29) 得0分 ...m_str.GetBuffer(needlen)...;....m_str.ReleaseBu ffer() 回复人: dusb(保时捷) (2001-11-6 15:08:36) 得0分 espon99大侠,果然是绝招
不过能否解释一下啊? 19如何从CString类型转换为Unicode string 类汇美舍精油型?往返复人: ychener(贫血) (2001-10-20 10:28:48) 得0分 CString本身就支持Unicode的 只要你选择的是UniCode编译,生成的可执行程序就是支持UniCode的 回复人: ychener(贫血) (2001-10-20 10:30:04) 得0分 CString类是自适应的就像TCHAR一样
如果你定义了UniCode宏 就会以UniCode编译 来回复人: xjl1980_81(阿龙) (2001-10-20 10:35:16) 得0分 不是呀,我有个函数中有一个参数需Unicode string 类型的
比如应该填L"abc",而且引号中的内容要有变化,现在我有一个 temp变量,是CString类型的
如何用呀? 回复人: xt_jat(桑巴) (2001-10-20 10:39:37) 得0分 _T()_TEXT()行不行? 来回复人: xjl1980_81(阿龙) (2001-10-20 10:43:18) 得0分 不行 来回复人: Jeffery__Chen() (2001-10-20 11:04:53) 得0分 强制转化:CString temp;WCHAR wTemp = (WCHAR)temp; 回复人: xjl1980_81(阿龙) (2001-10-20 11:37:06) 得0分 to:Jeffery__Chen() 不对呀
出现不能转换的错误 回复人: hongzhh(关儿) (2001-10-20 11:39:42) 得0分 问题是这样的:temp 是 CString类型变量,值为zhh现在有一个API PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, //此处用 L"zhh" 没问题 //请问怎么转换 可以 用tempPCCERT_CONTEXT pPrevCertContext );在此谢谢大家,请帮忙看看来回复人: hongzhh(关儿) (2001-10-20 13:27:10) 得0分 WCHAR wszDomain[256]; MultiByteToWideChar( CP_ACP, 0, temp,strlen(temp) 1, wszUserName, sizeof(wszUserName)/sizeof(wszUserName[0]) );wszUserName就是转换后的值来回复人: ychener(贫血) (2001-10-23 11:43:05) 得0分 只要你用的是CString的函数就行的
如果你要用类似strcpy函数时
看观MSDN中一般情况下都有响应的函数对于Unicode的只要换成_tcscpy等等 来回复人: ychener(贫血) (2001-10-23 11:44:10) 得0分 你有没有定义Unicode宏? 20请问在用ATL且不支持MFC的组件开发中
如何将从数据库中读到的DATE数据类型转换回为字符串?? 复人: zhxuys(zhxuys) (2001-9-24 10:36:47) 得0分 ATL把datetime类型的列映射为DBTIMESTAMP类型,可取出该类型的year、month、day等
然后将这些数据传递往返客户端,在客户端用CTime来构造 回复人: YUANXU(旭) (2001-9-24 11:18:14) 得0分 to zhxuys:CTime是MFC类
在ATL 不支持MFC时不能用DATE其实质是个double* 回复人: zhxuys(zhxuys) (2001-9-24 11:57:01) 得0分 你在客户端与服务器端只用ATL规定的数据类型或VARIANT类型,而在客户端
可以用MFC来重新构造想要的数据结构 21类型转换
CString to wchar_t ??CString ss("aabb");wchar_t* cc;cc=ss.AllocSysString();22如何将CString类型转换为_bstr_t类型?回复人: wei97081116(韦小宝) (2001-9-4 11:19:30) 得20分 CString b;_bstr_t a;a=(_bstr_t)b; 回复人: zhaozhen1212(赵振) (2001-9-18 1:30:18) 得0分 _bstr_t a=b.AllocSysString();;23如何把一个CString类型转换成一个普通的字符串
如char*?回复人复方氨酚烷胺片作用: liu_feng_fly(我恨死驱动程序了
哎,就是为了混口饭吃) (2001-9-17 18:00:52) 得0分 所以
直接用就可以
因为类里边有这样的转换函数 来回复人: ydogg(灰毛兔频频) (2001-9-17 18:01:21) 得0分 CString show;char *p = show.GetBuffer(show.GetLength()); 往返复人: jiangping_zhu(娜可露露之风之刃) (2001-9-17 18:02:05) 得0分 (char*)(LPCTSTR)str 往返复人: bmouse(老鼠) (2001-9-18 0:10:56) 得0分 同意楼上! 回复人: bmouse(老鼠) (2001-9-18 0:13:22) 得0分 你还可以通过GetBuff来直接操作CString的缓冲区,不过要记着释放缓冲区. 24CString 类型转换成 unsigned char类型吗??回复人: LJN(*)风流倜傥无人及,玉树偏又临风立(*) (2001-9-17 12:46:01) 得0分 可以用CString.GetBuffer函数 回复人: xpmao() (2001-9-17 13:09:09) 得0分 CString strWork;MessageBox(0,(LPSTR)strWork,0,0);或MessageBox(0,strWork.GetBuffer(0),0,0);往返复人: sandd(降龙掌) (2001-9-17 13:17:32) 得0分 CString string;(LPCTSTR)string; 回复人: jeff_hunter(PandaLee) (2001-9-17 13:45:30) 得0分 (unsigned char *)(LPCTSTR) 回复人: fandh(好了) (2001-9-17 14:00:57) 得0分用(unsigned char *)(LPCTSTR)即可 回复人: ygd(ygd) (2001-9-17 16:11:17) 得0分 unsigned char *p;CString str;int length=str.GetLength();for(int i=0;i p[i]=str.GetAt(i); 回复人: swordbroken(断剑书生) (2001-9-17 16:25:57) 得0分 CString str;unsigned char string[30];strcpy(string,str); 25何将一个unsigned int 类型变量值赋给类型为unsigned short的变量
并保证数值不丢失(当然数值在一定范围内)?来回复人: maxsuy(魔法师兔子) (2001-8-14 16:37:30) 得0分 直接=就OK了 回复人: oppmm(ppmm) (2001-8-14 16:38:11) 得0分 直接赋值 回复人: milefo(弥勒佛) (2001-8-14 16:40:40) 得0分 如果数值在一定范围内怎么回丢失呢?unsigned short a;unsigned int b;a=( b & 0xffff);你试试看吧!26CString ----char* 定义了char* aa的变量
现在有一个CString的变量bb
怎样把bb的值赋给aa呢? 来回复人: emmai(WaTaXiWaWaTaXi) (2001-8-10 11:57:33) 得0分 aa=bb.GetBuffer(); 回复人: hswqs(??????????????????) (2001-8-10 11:59:01) 得0分 aa= (LPSTR)(LPCTSTR)bb; 来回复人: ydogg(灰毛兔) (2001-8-10 12:27:23) 得0分 1.aa=bb.GetBuffer(bb.GetLenth());//第一种方法2.aa= (LPSTR)(LPCTSTR)bb; //第二种方法 回复人: zhizhi() (2001-8-10 13:16:23) 得0分 aa= (char *)(LPCTSTR)bb,hehe 27在一个COM的接口函数中有一个 BSTR* 类型的参数
需要把一个 char * 类型转换为 BSTR* 类型,不知道如何转换? 由于调用这个函数后需要把这个参数值再取出来所以只能用指针,另外在调用的时候应该用什么类型的数据传递参数呢?大虾帮忙BSTR bstr = SysAllocString(L"字符串");这样转换,用的时候你用地址操作符&啊
要不指针还得new 回复人: yongyue2000i(小吕) (2001-9-9 18:38:26) 得13分 CString str = "abcd";BSTR bstr = str.AllocSysString(); 往返复人: houjzs() (2001-9-9 19:14:44) 得13分 BSTR b = SysAllocString(OLESTR("your string"));28要把一个double的数字输出到CEdit控件是否需要类型转换?回复人: jiangsheng(蒋晟) (2001-8-24 14:46:17) 得0分 void AFXAPI DDX_Text( CDataExchange* pDX, int nIDC, double& value ); 往返复人: xiezhsh(雪中行) (2001-8-24 14:56:22) 得0分 假如你的CEdit相关的成员变量是Double型的精油品牌排名,那根本用不着.(ClassWizard增加成员变量的对话框中
Variable Type选择Double可) 回复人: xiezhsh(雪中行) (2001-8-24 14:58:16) 得0分 假如你的CEdit相关的成员变量不是Double型的
是CString型
那就需要用ltoa()来转换成CString型, 来回复人: haven(大天) (2001-8-24 14:58:32) 得0分 m_Edit.Fromat("%l",VarBouble);updatedata(false); 来回复人: 12345678() (2001-8-24 14:59:54) 得0分 CString m_Edit.Format("%lf", doubleVar); GetDlgItem(EditID)->SetWindowText(m_strEdit); 29该如何把 WINDOWPLACEMENT * 转换成 char **类型??(char**)&pWP 30怎样把CString的类型转换成char*型的?来回复人: dcz(dcz) (2001-8-19 19:13:27) 得5分 // str is CString varchar* temp = strdup(str);...free(temp); 回复人: yu900(疾风之狼) (2001-8-19 19:57:25) 得0分 getbuffer();即可! 回复人: aileen_long(挑战2001) (2001-8-19 21:10:35) 得0分 同意楼上的意见! 回复人: czh912() (2001-8-19 21:27:08) 得0分 char buf[20];printf(buf,"%s",string);回复人: casl(casl) (2001-8-19 22:59:44) 得5分 CString s("abc");char* temp=s.GetBuffer(10);...s.ReleaseBuffer(); 回复人: cocia(高亚) (2001-8-19 23:04:23) 得0分 char* temp=s.GetBuffer(10);10是什么意思啊回复人: kevin_dong(梦仙人) (2001-8-20 10:26:35) 得0分 // str is CString varchar* temp = strdup(str);// freefree(temp); 俺滴这段代码在一个程序中能通过编译,但是在另外一个中总是出现cannot convert parameter 1 from 'class CString' to 'const char *'的错误str和temp的类型都一样这是为什么?往返复人: dcz(dcz) (2001-8-20 14:13:45) 得0分 you may setting your compiler option to UNICODE, in this case, declare the var:// str is CString var_TCHAR* temp = _tcsdup(str);// freefree(str);31SA,SB为两个结构类型??SA* A;SB* B;(SB*)A->...(调用函数)请问此时A的类型
是指向SA还是SB此时编译器是生成一个临时指针吗?另外
B=(SB*)A;此时A又是什么类型???往返复贴子: 往返复人: ddeng(登登) (2001-8-9 17:13:58) 得0分 A的类型始终是SA *B的类型始终是SB *当进行强制类型转换时使的是临时指针 回复人: gold_water(风雨无阻) (2001-8-9 17:30:46) 得0分 同意楼上的 32char buff[100],char UserName[50][100],怎么将buff的值传给UserName
是其成为UserName数组中的某一项呢??//0= strcpy(UserName[i],buff); 往返复人: Ashura(阿修罗) (2001-7-26 10:08:20) 得0分 呵呵
benbensan抢先一步 往返复人: tuita(斗牛士) (2001-7-26 10:13:22) 得0分 for (i=0;i<100;i )*(*(username x) i)=*(buffer i)其中0《X〈50benbensan写的也对来回复人: kekeke(我是来向大家学习的) (2001-7-26 10:24:22) 得0分 那反过来呢?把UserName中的某一项读出赋值给buff呢?怎么弄? 往返复人: benbensan(笨笨三) (2001-7-26 10:26:53) 得0分 //0= strcpy(UserName[i],buff); 来回复人: benbensan(笨笨三) (2001-7-26 10:28:15) 得0分 对不起
能错了
不过建议你观一下C语言了的指针和数组//0= strcpy(buff,UserName[i]); 回复人: jfzsl(剿匪总司令) (2001-7-26 10:32:57) 得0分 好好看观老潭的书先!OK? 回复人: kekeke(我是来向大家学习的) (2001-7-26 10:44:25) 得0分 好! 33请问怎样把SYSTEMTIME类型转换成time_t类型?SYSTEMTIME st;GetLocalTime(&st);CTime tm(st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute, st.wSecond);time_t t = tm.GetTime();34unsigned char Exponent[10]; //eunsigned long eBytes; //e的字节数如何转换成DWord型! ??用强制类型转换呀(DWord)eBeytes;(DWord)Exponent[i];//(0<=i<=10);回复人: xjl1980_81(阿龙) (2001-7-26 16:47:29) 得0分 我是说把e转换成DWORD型也就玫瑰精油怎么用是说把Exponent中的内容转换成DWORD型回复人: cloudshadow1(云影) (2001-7-26 17:13:30) 得0分 用强制类型转换就可以了
(DWORD的高24位自动加0)DWORD Des[10]for (int i=0;i<11;i )Des[i]=Exponent[i];至于那个ULONG的也是用强制类型软换就可以了35请问怎样把time_t类型转换成SYSTEMTIME类型?回复人: haven(大天) (2001-7-26 17:12:36) 得0分 typedef struct _SYSTEMTIMEtypedef long time_t很明显不行嘛! 往返复人: facexy(FACE仔) (2001-7-26 17:17:38) 得0分 哎呀
问错了,前后对象相反了;-(忙昏了的结果…………另外,TO 楼上的:转换是可以的struct tm *tblock;SYSTEMTIME SystemTime;memset(&SystemTime,0,sizeof(SYSTEMTIME) );tblock=localtime(&timer);SystemTime.wYear=tblock-> tm_year 1900;SystemTime.wMonth=tblock->tm_mon 1;Syst emTime.wDay=tblock->tm_mday;SystemTime.wHour=tblock-> tm_hour;SystemTime.wMinute=tblock->tm_min;SystemTime .wSecond=tblock->tm_sec;SystemTime.wDayOfWeek=tblock ->tm_wday;return &SystemTime; 来回复人: zjh73(大章鱼) (2001-7-26 20:28:28) 得0分 有两种方法:1、用CTime类先用time_t类型构造一个CTime对象
再定义一个SYSTEMTIME结构
最后用CTime类的成员函数GetAsSystemTime将时间转换到SYSTEMTIME结构中即可2、用gmtime函数gmtime函数将time_t时间转换到tm结构中并返往返一个tm指针
再将tm结构的相对应的项赋给SYSTEMTIME相对应的项即可
不过用这种方法要注重这两种结构在天、星期等方面的记数方法有点区别,一个一般从0开始
一个一般从1开始
赋值时要注重校正
还有要注重的是SYSTEMTIME结构中有一项是毫秒
而time_t是以秒记数的 回复人: zjh73(大章鱼) (2001-7-26 20:32:13) 得0分 反过来也可以用Ctime类的方法就是先用SYSTEMTIME结构构造一个CTime对象,在用CTime类中的成员函数GetTime返往返一个对应的time_t即可 36我现在正在学习SDK编程
碰到的问题是:我定义了一个静态长整形变量,static long lScore=0;我想把窗口的标题换成长整形数值,用SetWindowText函数来实现,由于它的第二个参数要求数据类型为 unsigned short *,但用其来实现强制转换时总是出现编译错误:cannot convert parameter 2 from 'unsigned short *' to 'const char *'后来改成来LPCTSTR 来实现强制转换
没有出现编译错误,但函数总是执行不成功,请教各位高人
这倒底是怎么来回事???来回复贴子: 来回复人: prog_st(st) (2001-8-4 21:20:07) 得0分 /* ITOA.C: This program converts integers of various* sizes to strings in various radixes.*/#include #include void main( void ){char buffer[20];int i = 3445;long l = -344115L;unsigned long ul = 1234567890UL;_itoa( i, buffer, 10 );printf( "String of integer %d (radix 10): %s\n", i, buffer );_itoa( i, buffer, 16 );printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );_itoa( i, buffer, 2 );printf( "String of integer %d (radix 2): %s\n", i, buffer );_ltoa( l, buffer, 16 );printf( "String of long int %ld (radix 16): 0x%s\n", l, buffer );_ultoa( ul, buffer, 16 );printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,buffer );}OutputString of integer 3445 (radix 10): 3445String of integer 3445 (radix 16): 0xd75String of integer 3445 (radix 2): 110101110101String of long int -344115 (radix 16): 0xfffabfcdString of unsigned long 1234567890 (radix 16): 0x499602d2回复人: lwg7603(刑满释放人员) (2001-8-4 21:36:15) 得0分 TCHAR str[255]={_T('\0')};_stprintf(str,_T("%d"),lScore) ;SetWindowText(hwnd,str);37我用socket发送的的buf中间需要的是 char *类型的数据
我想将一个护发精油怎么用 struct 直接转换成 char * 发过去我用struct ABCD *abcd;char *buf;abcd = (ABCD *)calloc(1,sizeof(ABCD));buf = (char *)calloc(1,sizeof(ABCD));///给abcd 中间赋值
其中有多个char[]的值和int 的值///memcpy(buf,abcd,sizeof(ABCD));//strcpy(buf,(cha r *)abcd);也不可以sock(host,buf,....);//sock(host,(char *)buf,...);也不可以问题就是在这里,这个buf中间的值总是不对
大家知道为什么否回复人: wolf721() (2001-7-30 18:18:34) 得5分 你传的是个指针值
而不是数据 回复人: kiko_lee(到处瞧瞧) (2001-7-30 18:50:49) 得0分 但是用memcpy这个是将整个数据都复制过去 回复人: lz_0618(lz_0618) (2001-7-30 19:26:44) 得5分 你用的VC???改成ABCD *abcd;后编译一点问题也没有啊!sock(host,buf,....);这不知是什么
自定义函数?typedef struct _ABCD{int ID;char Name[10];}ABCD;.......ABCD *abcd;char *buf;abcd = (ABCD *)calloc(2,sizeof(ABCD));buf = (char *)calloc(2,sizeof(ABCD));/////给abcd 中间赋值
其中有多个char[]的值和int 的值abcd[0].ID =1;abcd[1].ID =2;///memcpy(buf,abcd,2*sizeof(ABCD));strcpy(buf,( char *)abcd);//也不可以buf中的内容也正确!!来回复人: kiko_lee(到处瞧瞧) (2001-7-31 8:57:52) 得0分 我按照楼上的兄弟说的
做了一下
但是仍然做不下来,我用memcpy(buf,abcd,sizeof(ABCD));中间的abcd,不知道是不是地址的问题 回复人: supersusheng(小苏) (2001-7-31 14:30:42) 得0分 老大
看看吧 往返复人: ydogg(灰毛兔) (2001-7-31 14:41:52) 得0分 只能传递流数据
结构是传递不过去的 往返复人: IamNotMan(NorGirl) (2001-7-31 14:50:53) 得5分 我常这么用ABCD a ;//给a的各个域赋值(一定不能含有指针项)char* buff = new char[sizeof(ABCD)];memcpy(buff,&a,sizeof(ABCD));//或者 *(ABCD*)buff = a;.................如果buff里的数对
说明问题不在这儿吧来回复人: zb_china(最后一座水车zb_china新浪) (2001-7-31 15:16:24) 得0分 观不明白 回复人: eggplant(拉拉) (2001-7-31 15:42:48) 得0分 最好使用memcpy(),因为struct中的值有可能包含零字节,所以strcpy()可能不对
如果传递struct,最好把struct的字节对齐改为以字节为单位 往返复人: lvfengxun(lfx) (2001-7-31 16:06:57) 得5分 直接将结构指针作为send的参数发就可以了,还用转换什么有必要在这里讨论吗?struct AA{int a;char b[100];};struct AA aa;aa.a=11;strcpy(aa.b,"aaa");send(hSocket,(char *)(&aa),sizeof(aa),0);//OK 来回复人: mydewang(mydewang) (2001-7-31 16:33:21) 得0分 其实这里是一个字节对齐的问题,比如struct AA{int a;char b;};那么sizeof( struct AA )就不等于5了,而是8了,所以,将这个结构赋值给一个char *,里面会多出一些零...需要解决这个问题,可以在Project->Setting->Link->Project Options里加上/Zp1另外,可以参考一下MSDN里/Zp的编译选项..... 回复人: lz_0618(lz_0618) (2001-7-31 19:43:54) 得0分 根本不是什么字节对齐的问题,我上面的程如何用精油护肤序经过测试都好用啊,这位老兄用我的那段程序究竟是什么错误,能说清楚点吗???我这边用socket发送结构是一点问题也没有啊
而且是在VC和Delphi编的程序间通讯
当然
这时应该注重字节对齐的问题了
在VC程序间
只要不是故意将服务器和客户端的编译环境设的不一样,肯定是没有什么问题的,最多是多传几个Bit罢了 回复人: kiko_lee(到处瞧瞧) (2001-8-3 11:02:51) 得0分 我发现将char * memcpy 到 char * 中间都有点问题,但是如果放到 char []中间就可以了,大家知道为什么否? 往返复人: ydogg(灰毛兔) (2001-8-3 11:40:35) 得0分 memcpy不copy最后的'\0'... 回复人: wenjunlin2000(微软克星) (2001-8-3 14:32:17) 得0分 是你看错了因为char*是以0 结尾的来回复人: mc_music(狂沙) (2001-8-3 15:07:21) 得0分 请注意我的程序:struct ABCD *abcd;char *buf;abcd = (ABCD *)calloc(1,sizeof(ABCD));//初始化abcdbuf=abcd;//指针直接符值就可以了 往返复人: zhangnanonnet(WinSockZhang) (2001-8-3 16:21:03) 得0分 你试试把类型变为BYTE 来回复人: kiko_lee(到处瞧瞧) (2001-8-7 9:21:08) 得0分 不管了
给分,大家都有不少的建议呢 38double dou=12.34;我如何可以得到char * ch="12.34";转换函数是什么?来回复人: wyzegg(蛋) (2001-7-24 21:26:04) 得50分 double dou=12.34;char * ch;ch=malloc(100);sprintf(ch,"%5.2f",dou); 往返复人: wyzegg(蛋) (2001-7-24 21:28:24) 得0分 或者#include #include void main( void ){int decimal, sign;char *buffer;int precision = 10;double source = 3.1415926535;buffer = _ecvt( source, precision, &decimal, &sign );printf( "source: %2.10f buffer: '%s' decimal: %d sign: %d\n",source, buffer, decimal, sign );}但是第一种常用 来回复人: Matrix_w(学会一点点) (2001-7-24 21:32:43) 得30分 int decimal, sign;double dou =12.34;char* ch;ch = _ecvt(dou,4,&decimal,&sign);回复人: imhua(华弟) (2001-7-24 21:35:02) 得20分 double dou=12.34;char *str;gcvt(dou,5,str); //5是长度MessageBox(str); 回复人: Matrix_w(学会一点点) (2001-7-24 21:37:58) 得0分 /* _GCVT.C: This program converts -3.1415e5* to its string representation.*/#include #include void main( void ){char buffer[50];double source = -3.1415e5;_gcvt( source, 7, buffer );printf( "source: %f buffer: '%s'\n", source, buffer );_gcvt( source, 7, buffer );printf( "source: %e buffer: '%s'\n", source, buffer );}Outputsource: -314150.000000 buffer: '-314150.'source: -3.141500e 005 buffer: '-314150.'39 我在ADO中调用一个存储过程
存储过程有三个输渗透参数@useradd char(30),@username char(10),@userage char(3),现在要把char *addr,char *name,char *age分别赋值给他们??我做了如下定义:_ParameterPtr para1;_variant_t var1,var2,var3;================================================== ============var1.vt=VT_BSTR;var1.bstrval=addr;///// (编译错误)================================================== ============para1=m_pCommand->CreateParameter(L"user add",adBSTR,adParamInput,30,var1);m_pCommand->Parame ters->Append(para1);编译结果出现下面错误:cannot convert from 'char *' to 'unsigned short *不知道类型是不是选择VT_BSTR?来回复人:tar(GPS) (2001-7-12 18:49:05) 得15分 var1.bstrval应该指向宽字符的字符串
即unicode字符串use _bstr_t to convert it_bstr_t var1(addr); 往返复人:happyhackwang() (2001-7-12 20:06:48) 得5分 char *要进行转换成BSTR 回复人:WhiteWaterBlueSky(疯狂数码) (2001-7-13 9:35:15) 得10分 SDK中是这样的1先用MultiByteToWideChar把char* 转为wchar_t*2再用SysAllocString把wchar_t*转为BSTR 回复人:tar(GPS) (2001-7-13 14:10:01) 得0分 faint,我都已经把语句写出来了_bstr_t a(addr);var1.vt=VT_BSTR;var1.bstrval=(wchar_t *)a; 回复人:xwchena(西风之神) (2001-7-13 15:57:00) 得0分 大哥,我改完之后记录集无结果返往返俺滴代码是这样的:m_pRecordset.CreateInstance(__uuidof(Recordset));m _pRecordset=m_pCommand->Execute(NULL,NULL,adCmdStore dProc);if(!m_pRecordset->adoEOF){result1=m_pRecordse t->GetCollect((long)0);if(result1.vt!=NULL){result1. ChangeType(VT_BSTR);CString strResult1=result1.bstrVal;strcpy(resval,strResult 1);}调试的时候补水的洗面奶看到执行完m_pCommand->Execute()后m_pRecordset就到了记录集的尾部而如果把char*型都改成int型,结果就能返来回记录集这是为什么啊??? 回复人:tar(GPS) (2001-7-13 19:19:51) 得0分 try adVarChar 回复人:xwchena(西风之神) (2001-7-13 22:54:21) 得0分 还是不行
记录集没有返回结果 回复人:seesi(不是我想骗你,是我不知道怎么才能不骗!) (2001-7-14 0:24:36) 40如何将 BSTR pVal 赋给:unsigned char *pw;如何将:unsigned char digest[16]赋给 BSTR *pOutVal? USES_CONVERSION; *pOutVal=SysAllocString(A2W((LPTSTR)digest));unsig ned char *pw = (unsigned char *)_com_util::ConvertBSTRToString(pInVal);
