如何將cstring型別的變數賦給char*型別的變數
1、getbuffer函式:
使用cstring::getbuffer函式。
char *p;
cstring str="hello";
p=str.getbuffer(str.getlength());
str.releasebuffer();
將cstring轉換成char * 時
cstring str("aaaaaaa");
strcpy(str.getbuffer(10),"aa");
str.releasebuffer();
當我們需要字元陣列時呼叫getbuffer(int n),其中n為我們需要的字元陣列的長度.使用完成後一定要馬上呼叫releasebuffer();
還有很重要的一點就是,在能使用const char *的地方,就不要使用char *
2、memcpy:
cstring mcs=_t("cxl");
char mch[20];
memcpy(mch,mcs,20);
3、用lpctstr強制轉換: 盡量不使用
char *ch;
cstring str;
ch=(lpstr)(lpctstr)str;
cstring str = "good";
char *tmp;
sprintf(tmp,"%s",(lptstr)(lpctstr)str);
4、cstring msg;
msg=msg+"abc";
lptstr lpsz;
lpsz = new tchar[msg.getlength()+1];
_tcscpy(lpsz, msg);
char * psz;
strcpy(psz,lpsz);
cstring類向const char *轉換
char a[100];
cstring str("aaaaaa");
strncpy(a,(lpctstr)str,sizeof(a));
或者如下:
strncpy(a,str,sizeof(a));
以上兩種用法都是正確地. 因為strncpy的第二個引數型別為const char *.所以編譯器會自動將cstring類轉換成const char *.
cstring轉lpctstr (const char *)
cstring cstr;
const char *lpctstr=(lpctstr)cstr;
lpctstr轉cstring
lpctstr lpctstr;
cstring cstr=lpctstr;
將char*型別的變數賦給cstring型的變數
可以直接賦值,如:
cstring mystring = "this is a test";
也可以利用建構函式,如:
cstring s1("tom");
將cstring型別的變數賦給char 型別(字串)的變數
1、sprintf()函式
cstring str = "good";
char tmp[200] ;
sprintf(tmp, "%s",(lpcstr)str);
(lpcstr)str這種強制轉換相當於(lptstr)(lpctstr)str
cstring類的變數需要轉換為(char*)的時,使用(lptstr)(lpctstr)str
然而,lpctstr是const char *,也就是說,得到的字串是不可寫的!將其強制轉換成lptstr去掉const,是極為危險的!
一不留神就會完蛋!要得到char *,應該用getbuffer()或getbuffersetlength(),用完後再呼叫releasebuffer()。
2、strcpy()函式
cstring str;
char c[256];
strcpy(c, str);
char mychar[1024];
cstring source="hello";
strcpy((char*)&mychar,(lpctstr)source);
關於cstring的使用
1、指定 cstring 形參
對於大多數需要字串引數的函式,最好將函式原型中的形參指定為乙個指向字元 (lpctstr) 而非 cstring 的 const 指標。
當將形參指定為指向字元的 const 指標時,可將指標傳遞到 tchar 陣列(如字串 ["hi there"])或傳遞到 cstring 物件。
cstring 物件將自動轉換成 lpctstr。任何能夠使用 lpctstr 的地方也能夠使用 cstring 物件。
2、如果某個形參將不會被修改,則也將該引數指定為常數字串引用(即 const cstring&)。如果函式要修改該字串,
則刪除 const 修飾符。如果需要預設為空值,則將其初始化為空字串 [""],如下所示:
void addcustomer( const cstring& name, const cstring& address, const cstring& comment = "" );
3、對於大多數函式結果,按值返回 cstring 物件即可。
串的基本運算
4、串比較
int strcmp(char *s1,char *s2);//比較s1和s2的大小,
//當s1s2和s1=s2時,分別返回小於0、大於0和等於0的值
【例】result=strcmp("baker","baker"); //result>0
result=strcmp("12","12"); //result=0
result=strcmp("joe","joseph") //result<0
5、字元定位
char *strchr(char *s,char c);//找c在字串s中第一次出現的位置,
//若找到,則返回該位置,否則返回null
【例】p=strchr(s2,'.'); //p指向"file"之後的位置
if(p) strcpy(p,".cpp"); //s2="file.cpp"
注意:①上述操作是最基本的,其中後 4個操作還有變種形式:strncpy,strncath和strnchr。
②其它的串操作見c的。在不同的高階語言中,對串運算的種類及符號都不盡相同
③其餘的串操作一般可由這些基本操作組合而成
【例】求子串的操作可如下實現:
void substr(char *sub,char *s,int pos,int len){
//s和sub是字元陣列,用sub返回串s的第pos個字元起長度為len的子串
//其中0<=pos<=strlen(s)-1,且陣列sub至少可容納len+1個字元。
if (pos<0||pos>strlen(s)-1||len<0)
error("parameter error!");
strncpy(sub,&s[pos],len); //從s[pos]起複製至多len個字元到sub
c string和其他型別互轉
c 數值型別與string的相互轉換 c string的萬能轉換,從long string 之間的轉換來看看 c 11 使用函式模板將基本資料型別 整型 字元型 實型 布林型 轉換成string。ostringstream物件用來進行格式化的輸出,常用於將各種型別轉換為string型別 ostrin...
C string報未引入和CString互轉
c 在使用string類的時候報錯 string undeclared identifier 解決方法 include 引入string.而不是,using namespace std 引入命明空間.如果要輸出內容就要用 include include using namespace std cst...
CString與其他型別的轉換
如何將cstring型別的變數賦給char 型別的變數 1 getbuffer函式 使用cstring getbuffer函式。char p cstring str hello p str.getbuffer str.getlength str.releasebuffer 將cstring轉換成ch...