国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VC 強(qiáng)制類型轉(zhuǎn)換

以下是一些VC下的強(qiáng)制類型轉(zhuǎn)換的函數(shù)

一、字符串轉(zhuǎn)換
1.CString 轉(zhuǎn)化為整形Int
 CString str=_T("12345");
 atoi((LPCSTR)str);//用LPCSTR轉(zhuǎn)化為const char*即可

 CString str="1";
 int n=atoi(str.GetBuffer(0));

2.將一個(gè)CString轉(zhuǎn)到一個(gè)char的數(shù)組(char*)中
 char buffer[128]
 CString str;
 a.//strcpy方法
 strcpy(buffer,str.GetBuffer());
 str.ReleaseBuffer();
 b.//強(qiáng)制轉(zhuǎn)化方法
 buffer=(LPTSTR)(LPCTSTR)str;
 c.//sprintf方法
 sprintf(buffer,"%s",str);

 d.
 CString str;
 int nLength=str.GetLength();
 char * sz=new char[nLength];
 sz=str.GetBuffer(0);
 (LPCSTR)CString

 e.經(jīng)過(guò)類型強(qiáng)制轉(zhuǎn)換,可以將CString類型轉(zhuǎn)換成char*,例如:
 CString cStr = "Hello,world!";
 char* zStr = (char*)(LPCTSTR)cStr;

3.int 轉(zhuǎn) cstring
 CString string;
 int iValue=100;
 string.Format(_T("%d"),iValue);
 MessageBox(string);
 string的值為"100"

4.char * 轉(zhuǎn) CString
 a.
 char sz[128];
 CString str;
 str.Format("%s",sz);

 b.
 CString.format("%s", char*); 
 CString strtest; 
 char * charpoint; 
 charpoint="give string a value"; 
 strtest=charpoint; //直接付值

 c.
 char*類型可以直接給CString,完成自動(dòng)轉(zhuǎn)換,例如:
 char* zStr = "Hello,world!";
 CString cStr = zStr;

5.Float 轉(zhuǎn) CString
 float f=0.0;
 CString str;
 str.Format("%f",f);

6.CString 轉(zhuǎn) Float
 CString str="0.0";
 float f=atof(str.GetBuffer(0));

7.string 轉(zhuǎn) CString 
 CString.format("%s", string.c_str()); 
 用c_str()確實(shí)比data()要好.

8.char* 轉(zhuǎn) int
 #include <stdlib.h>
 int atoi(const char *nptr);
 long atol(const char *nptr);
 long long atoll(const char *nptr);
 long long atoq(const char *nptr);

9.CString 轉(zhuǎn) string
 string s(CString.GetBuffer()); 
 GetBuffer()后一定要ReleaseBuffer(),否則就沒(méi)有釋放緩沖區(qū)所占的空間.

10.int 轉(zhuǎn) char *
 在stdlib.h中有個(gè)函數(shù)itoa()
 itoa的用法:
 itoa(i,num,10);
 i 需要轉(zhuǎn)換成字符的數(shù)字
 num 轉(zhuǎn)換后保存字符的變量
 10 轉(zhuǎn)換數(shù)字的基數(shù)(進(jìn)制)10就是說(shuō)按照10進(jìn)制轉(zhuǎn)換數(shù)字。還可以是2,8,16等等你喜歡的進(jìn)制類型
 原形:char *itoa(int value, char* string, int radix);
 實(shí)例:
 #include "stdlib.h"
 #include "stdio.h"
 main()
 {
 int i=1234;
 char s[5];
 itoa(i,s,10);
 printf("%s",s);
 getchar();
 }

11.string 轉(zhuǎn) char * 
 char *p = string.c_str(); 
 string aa("aaa");
 char *c=aa.c_str();

 string mngName;
 char t[200];
 memset(t,0,200);
 strcpy(t,mngName.c_str());

12、CString to LPCSTR
 將CString轉(zhuǎn)換成LPCSTR,需要獲得CString的長(zhǎng)度,例如:
 CString cStr = _T("Hello,world!");
 int nLen = cStr.GetLength();
 LPCSTR lpszBuf = cStr.GetBuffer(nLen);

13、CString to LPSTR
 這個(gè)和第3個(gè)技巧是一樣的,例如:
 CString cStr = _T("Hello,world!");
 int nLen = str.GetLength();
 LPSTR lpszBuf = str.GetBuffer(nLen);

14、Char[] to int
 將字符串類型轉(zhuǎn)換成整數(shù)型,可以使用atoi函數(shù),例如:
 char c[10];
 int n;
 n = atoi(c);

15、Char[] to float
 和第5個(gè)技巧一樣,使用atof()函數(shù)可以轉(zhuǎn)換成float型,例如:
 char c[10];
 float f;
 f = atof(c);

16、Char* to int
 char *str = "100";
 int i;
 i = atoi(str);

一、其它數(shù)據(jù)類型轉(zhuǎn)換為字符串
短整型(int)
itoa(i,temp,10);///將i轉(zhuǎn)換為字符串放入temp中,最后一個(gè)數(shù)字表示十進(jìn)制
itoa(i,temp,2); ///按二進(jìn)制方式轉(zhuǎn)換
長(zhǎng)整型(long)
ltoa(l,temp,10);

二、從其它包含字符串的變量中獲取指向該字符串的指針
CString變量
str = "2008北京奧運(yùn)";
buf = (LPSTR)(LPCTSTR)str;
BSTR類型的_variant_t變量
v1 = (_bstr_t)"程序員";
buf = _com_util::ConvertBSTRToString((_bstr_t)v1);

三、字符串轉(zhuǎn)換為其它數(shù)據(jù)類型
strcpy(temp,"123");

短整型(int)
i = atoi(temp);
長(zhǎng)整型(long)
l = atol(temp);
浮點(diǎn)(double)
d = atof(temp);

四、其它數(shù)據(jù)類型轉(zhuǎn)換到CString
使用CString的成員函數(shù)Format來(lái)轉(zhuǎn)換,例如:

整數(shù)(int)
str.Format("%d",i);
浮點(diǎn)數(shù)(float)
str.Format("%f",i);
字符串指針(char *)等已經(jīng)被CString構(gòu)造函數(shù)支持的數(shù)據(jù)類型可以直接賦值
str = username;

五、BSTR、_bstr_t與CComBSTR

CComBSTR、_bstr_t是對(duì)BSTR的封裝,BSTR是指向字符串的32位指針。
char *轉(zhuǎn)換到BSTR可以這樣: BSTR b=_com_util::ConvertStringToBSTR("數(shù)據(jù)");///使用前需要加上頭文件comutil.h
反之可以使用char *p=_com_util::ConvertBSTRToString(b);

六、VARIANT 、_variant_t 與 COleVariant
VARIANT的結(jié)構(gòu)可以參考頭文件VC98\Include\OAIDL.H中關(guān)于結(jié)構(gòu)體tagVARIANT的定義。
對(duì)于VARIANT變量的賦值:首先給vt成員賦值,指明數(shù)據(jù)類型,再對(duì)聯(lián)合結(jié)構(gòu)中相同數(shù)據(jù)類型的變量賦值,舉個(gè)例子:
VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型數(shù)據(jù)
va.lVal=a; ///賦值

對(duì)于不馬上賦值的VARIANT,最好先用Void VariantInit(VARIANTARG FAR* pvarg);進(jìn)行初始化,其本質(zhì)是將vt設(shè)置為VT_EMPTY,下表我們列舉vt與常用數(shù)據(jù)的對(duì)應(yīng)關(guān)系:

unsigned char bVal; VT_UI1
short iVal; VT_I2
long lVal; VT_I4
float fltVal; VT_R4
double dblVal; VT_R8
VARIANT_BOOL boolVal; VT_BOOL
SCODE scode; VT_ERROR
CY cyVal; VT_CY
DATE date; VT_DATE
BSTR bstrVal; VT_BSTR
IUnknown FAR* punkVal; VT_UNKNOWN
IDispatch FAR* pdispVal; VT_DISPATCH
SAFEARRAY FAR* parray; VT_ARRAY|*
unsigned char FAR* pbVal; VT_BYREF|VT_UI1
short FAR* piVal; VT_BYREF|VT_I2
long FAR* plVal; VT_BYREF|VT_I4
float FAR* pfltVal; VT_BYREF|VT_R4
double FAR* pdblVal; VT_BYREF|VT_R8
VARIANT_BOOL FAR* pboolVal; VT_BYREF|VT_BOOL
SCODE FAR* pscode; VT_BYREF|VT_ERROR
CY FAR* pcyVal; VT_BYREF|VT_CY
DATE FAR* pdate; VT_BYREF|VT_DATE
BSTR FAR* pbstrVal; VT_BYREF|VT_BSTR
IUnknown FAR* FAR* ppunkVal; VT_BYREF|VT_UNKNOWN
IDispatch FAR* FAR* ppdispVal; VT_BYREF|VT_DISPATCH
SAFEARRAY FAR* FAR* pparray; VT_ARRAY|*
VARIANT FAR* pvarVal; VT_BYREF|VT_VARIANT
void FAR* byref; VT_BYREF

_variant_t是VARIANT的封裝類,其賦值可以使用強(qiáng)制類型轉(zhuǎn)換,其構(gòu)造函數(shù)會(huì)自動(dòng)處理這些數(shù)據(jù)類型。
例如:
long l=222;
ing i=100;
_variant_t lVal(l);
lVal = (long)i;

COleVariant的使用與_variant_t的方法基本一樣,請(qǐng)參考如下例子:
COleVariant v3 = "字符串", v4 = (long)1999;
CString str =(BSTR)v3.pbstrVal;
long i = v4.lVal;

七、其它

對(duì)消息的處理中我們經(jīng)常需要將WPARAM或LPARAM等32位數(shù)據(jù)(DWORD)分解成兩個(gè)16位數(shù)據(jù)(WORD),例如:
LPARAM lParam;
WORD loValue = LOWORD(lParam);///取低16位
WORD hiValue = HIWORD(lParam);///取高16位
對(duì)于16位的數(shù)據(jù)(WORD)我們可以用同樣的方法分解成高低兩個(gè)8位數(shù)據(jù)(BYTE),例如:
WORD wValue;
BYTE loValue = LOBYTE(wValue);///取低8位
BYTE hiValue = HIBYTE(wValue);///取高8位
后記:本文匆匆寫成,錯(cuò)誤之處在所難免,歡迎來(lái)信指正。
int ->str itoa,atoi
double- str ftoa,atof

_bstr_t,_variant_t,CString,long 等等看看下面:
我給你點(diǎn)詳細(xì)的例子,看下面
先看懂_variant_t與_bstr_t這兩個(gè)類的構(gòu)造函數(shù)和 operator=
里面有重載了很多情況,
其他類型向_variant_t 賦值:
_variant_t( ) throw( );
_variant_t( const VARIANT& varSrc ) throw( _com_error );
_variant_t( const VARIANT* pVarSrc ) throw( _com_error );
_variant_t( const _variant_t& var_t_Src ) throw( _com_error );
_variant_t( VARIANT& varSrc, bool fCopy ) throw( _com_error );
_variant_t( short sSrc, VARTYPE vtSrc = VT_I2 ) throw( _com_error );
_variant_t( long lSrc, VARTYPE vtSrc = VT_I4 ) throw( _com_error );
_variant_t( float fltSrc ) throw( );
_variant_t( double dblSrc, VARTYPE vtSrc = VT_R8 ) throw( _com_error );
_variant_t( const CY& cySrc ) throw( );
_variant_t( const _bstr_t& bstrSrc ) throw( _com_error );
_variant_t( const wchar_t *wstrSrc ) throw( _com_error );
_variant_t( const char* strSrc ) throw( _com_error );
_variant_t( bool bSrc ) throw( );
_variant_t( IUnknown* pIUknownSrc, bool fAddRef = true ) throw( );
_variant_t( IDispatch* pDispSrc, bool fAddRef = true ) throw( );
_variant_t( const DECIMAL& decSrc ) throw( );
_variant_t( BYTE bSrc ) throw( );
operator=的重載形式:
_variant_t& operator=( const VARIANT& varSrc ) throw( _com_error );
_variant_t& operator=( const VARIANT* pVarSrc ) throw( _com_error );
_variant_t& operator=( const _variant_t& var_t_Src ) throw( _com_error );
_variant_t& operator=( short sSrc ) throw( _com_error );
_variant_t& operator=( long lSrc ) throw( _com_error );
_variant_t& operator=( float fltSrc ) throw( _com_error );
_variant_t& operator=( double dblSrc ) throw( _com_error );
_variant_t& operator=( const CY& cySrc ) throw( _com_error );
_variant_t& operator=( const _bstr_t& bstrSrc ) throw( _com_error );
_variant_t& operator=( const wchar_t* wstrSrc ) throw( _com_error );
_variant_t& operator=( const char* strSrc ) throw( _com_error );
_variant_t& operator=( IDispatch* pDispSrc ) throw( _com_error );
_variant_t& operator=( bool bSrc ) throw( _com_error );
_variant_t& operator=( IUnknown* pSrc ) throw( _com_error );
_variant_t& operator=( const DECIMAL& decSrc ) throw( _com_error );
_variant_t& operator=( BYTE bSrc ) throw( _com_error );

有了以上兩個(gè)函數(shù),舉個(gè)例子:
double f=1.0
_variant_t v;
v=f; //是合法的看看operator=的重載形式就知道了
CString str="ddd"
_variant_t v;
v=str.AllocSysString() 或者v=(_bstr_t)(char*)str;
即可

_variant_t轉(zhuǎn)換成別的形式
你首先必須確定你要轉(zhuǎn)化成什么樣的形式
double f;
_variant_t v
f=v.dblVal 即可或者f=(double)v;也可以

附:_variant_t的操作符
operator short( ) const throw( _com_error );
operator long( ) const throw( _com_error);
operator float( ) const throw( _com_error );
operator double( ) const throw( _com_error );
operator CY( ) const throw( _com_error );
operator bool( ) const throw( _com_error );
operator DECIMAL( ) const throw( _com_error );
operator BYTE( ) const throw( _com_error );
operator _bstr_t( ) const throw( _com_error );
operator IDispatch*( ) const throw( _com_error );
operator IUnknown*( ) const throw( _com_error );

1 string 2 CString 
 CString.format("%s",string.c_str());

2 CString 2 string

string str(CString.GetBuffer(str.GetLength()));

3 string 2 char *

char *p=string.c_str();

4 char * 2 string

string str(char*);

5 CString 2 char *

strcpy(char,CString,sizeof(char));

6 char * 2 CString

CString.format("%s",char*);

CString的format方法是非常好用的。string的c_str()也是非常常用的,但要注意和char *轉(zhuǎn)換時(shí),要把char定義成為const char*,這樣是最安全的。

************************************************************************************************

1. char* to string
string s(char *); 
注:在不是初始化的地方最好用assign().
?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!
2. string to const char*
string a="strte";
const char* r=a.c_str();
注意是const的。還要轉(zhuǎn)到char*:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.2. const char* to char*
const char* r="123";
char *p1 new char[strlen(r)+1];
strcpy(p1,r);
附:http://hi.baidu.com/cfans/blog/item/06970ef4b671f366dcc4745d.html
這個(gè)頁(yè)面是具體講述區(qū)別的。
··············································································

·······························
3. cstring to string
vs2005 Unicode下:
 CStringW str(L"test"); 
 CStringA stra(str.GetBuffer(0)); 
 str.ReleaseBuffer(); 
 std::string strs (stra.GetBuffer(0)); 
 stra.ReleaseBuffer();

非Unicode下:
CString cs("test");
std::string str=cs.getBuffer(0);
cs.ReleaseBuffer();

注:GetBuffer()后一定要ReleaseBuffer(),否則就沒(méi)有釋放緩沖區(qū)所占的空間.
++++++++++++++++++++++++++++++++++++++++++++++++++++
4. double ,int to string
#include <sstream>
using namespace std;

stringstream ss;
string result;
long n=11111;
stream << n; //從long型數(shù)據(jù)輸入
stream >>result; //轉(zhuǎn)換為 string


===================================================

5.char* to int, double ,long

char *s; double x; int i; long l;

s = " -2309.12E-15";
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = "7.8912654773d210";
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = " -9885 pigs";
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

s = "98854 dollars";
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
------------------------------------------------------------------------------------------------
6. string to int ,long ,double 
 int s;
string str="123";
stringstream ss;
ss<<str;//從str輸入
ss>>s;//輸出到int
ss.clear();


——————————————————————————————————————————
7. date to string
#include <time>
using namespace std;

char dateStr [9];
char timeStr [9];
_strdate( dateStr);
printf( "The current date is %s \n", dateStr);
_strtime( timeStr );
printf( "The current time is %s \n", timeStr);

--------實(shí)踐證明是正確的版本--------------------------------------------------------------
#include <iostream>
#include <ctime>
#include <cerrno>

int main()
{
 //Find the current time
 time_t curtime = time(0);
 
 //convert it to tm
 tm now=*localtime(&curtime);
 
 //BUFSIZ is standard macro that expands to a integer constant expression_r
 //that is greater then or equal to 256. It is the size of the stream buffer
 //used by setbuf()
 char dest[BUFSIZ]={0};
 
 //Format string determines the conversion specification's behaviour
 const char format[]="%A, %B %d %Y. The time is %X";
 
 //strftime - converts date and time to a string
 if (strftime(dest, sizeof(dest)-1, format, &now)>0)
 std::cout<<dest<<std::endl;
 else
 std::cerr<<"strftime failed. Errno code: "<<errno<<std::endl;
}

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8.string to cstring

+++++++++++++++++++++++++++++++++++++++++++++++++++++
非Unicode下:
int 轉(zhuǎn) CString:
CString.Format("%d",int);
...............................
string 轉(zhuǎn) CString 
CString.format("%s", string.c_str()); 
用c_str()確實(shí)比data()要好. 
.......................................
char* 轉(zhuǎn) CString 
CString.format("%s", char*); 
CString strtest; 
char * charpoint; 
charpoint="give string a value"; 
strtest=charpoint; //直接付值
.....................................................
CString 轉(zhuǎn) int
CString ss="1212.12"; 
int temp=atoi(ss); //atoi _atoi64或atol
...................................................................................................................................
9.在Unicode下的CString to double
CSting sTemp("123.567");
double dTemp = _wtof(sTemp.GetString());


二、數(shù)值處理
1、浮點(diǎn)數(shù)取整方法
 a、直接賦值給整數(shù)變量。如:
 int i = 2.5; 或 i = (int)2.5; 這種方法采用的是四舍五入。
 b、使 用 floor函 數(shù) 。 floor(x)返回的是x的整數(shù)部分。如:
 floor(2.5) = 2
 floor(-2.5) = -2
 c、使用ceil函數(shù)。ceil(x)返回的是不大于x的最小整數(shù)。如 :
 ceil(2.5) = 2
 ceil(-2.5) = -3
 d、求余數(shù)%,fmod函數(shù)。
 8 % 3 = 2
 fmod(8.1,3) = 2.1。適用于浮點(diǎn)數(shù)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VC常用數(shù)據(jù)類型使用轉(zhuǎn)換詳解
vc字符串轉(zhuǎn)換處理:(絕對(duì)精華,收集所有的例子)
BSTR、LPSTR和LPWSTR 等多種VC字符類型分析及各種字符類型轉(zhuǎn)換
VC常用數(shù)據(jù)類型列表
淺談BSTR,_bstr_r,VARIANT,_variant_t. VARIANT類型如何與CString互轉(zhuǎn)
有關(guān)數(shù)據(jù)類型轉(zhuǎn)換
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服