CString,字符数组,string 互相转换

合集下载

C++ 类型转换 atoi atol atof stdlib.h, itoa ftoa char --- string

C++ 类型转换 atoi atol atof stdlib.h, itoa ftoa char --- string

1. atoiint atoi ( const char * str );Convert string to integerParses the C string str interpreting its content as an integral number, which is returned as an int value./* atoi example */#include <stdio.h>#include <stdlib.h>int main (){int i;char szInput [256];printf ("Enter a number: ");fgets ( szInput, 256, stdin );i = atoi (szInput);printf ("The value entered is %d. The double is %d.\n",i,i*2); return 0;}outputEnter a number: 73The value entered is 73. The double is 146.2. atollong int atol ( const char * str );Convert string to long integerParses the C string str interpreting its content as an integral number, which is returned as a long int value./* atol example */#include <stdio.h>#include <stdlib.h>int main (){long int li;char szInput [256];printf ("Enter a long number: ");gets ( szInput );li = atol (szInput);printf ("The value entered is %d. The double is %d.\n",li,li*2);return 0;}outputEnter a number: 567283The value entered is 567283. The double is 1134566.3. atofdouble atof ( const char * str );Convert string to doubleParses the C string str interpreting its content as a floating point number and returns its value as a double./* atof example: sine calculator */#include <stdio.h>#include <stdlib.h>#include <math.h>int main (){double n,m;double pi=3.1415926535;char szInput [256];printf ( "Enter degrees: " );gets ( szInput );n = atof ( szInput );m = sin (n*pi/180);printf ( "The sine of %f degrees is %f\n" , n, m );return 0;}OutputEnter degrees: 45The sine of 45.000000 degrees is 0.7071014. itoachar * itoa ( int value, char * str, int base );Convert integer to string (non-standard function)Converts an integer value to a null-terminated string using the specified base and stores the result in the array given by str parameter.This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.A standard-compliant alternative for some cases may be sprintf:∙sprintf(str,"%d",value) converts to decimal base.∙sprintf(str,"%x",value) converts to hexadecimal base.∙sprintf(str,"%o",value) converts to octal base/* itoa example */#include <stdio.h>#include <stdlib.h>int main (){int i;char buffer [33];printf ("Enter a number: ");scanf ("%d",&i);itoa (i,buffer,10);printf ("decimal: %s\n",buffer);itoa (i,buffer,16);printf ("hexadecimal: %s\n",buffer);itoa (i,buffer,2);printf ("binary: %s\n",buffer);return 0;}OutputEnter a number: 1750decimal: 1750hexadecimal: 6d6binary: 110110101105. ftoa#include <sstream>string convertDouble(double value) {std::ostringstream o;if (!(o << value))return "";return o.str();6. string to char1. const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。

VC 中类型转换(CString,TCHAR,string)

VC 中类型转换(CString,TCHAR,string)
本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string 和 System.String。在所有情况下,在将字符串转换为新类型时,都会创建字符串的副本。对新字符串进行的任何更改都不会影响原始字符串,反之亦然。
AfxMessageBox(buf);
delete(buf);
_bstr_t变量
_bstr_t类型是对BSTR的封装,因为已经重载了=操作符,所以很容易使用
_bstr_t bstrVar("test");
const char *buf = bstrVar;///不要修改buf中的内容
AfxMessageBox(buf);
buffer = _fcvt( source, 7, &decimal, &sign );
运行结果:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
decimal表示小数点的位置,sign表示符号:0为正数,1为负数
CString变量
VARIANT va;
int a=2001;
va.vt=VT_I4;///指明整型数据
va.lVal=a; ///赋值
_variant_t是VARIANT的封装类,其赋值可以使用强制类型转换,其构造函数会自动处理这些数据类型。
使用时需加上#include <comdef.h>
例如:
long l=222;
特别是_bstr_t,建议大家使用它。

CString和string的转换

CString和string的转换

CString和string的转换CString和string的转换//从CString转换到stringCString str1 = "ABC";string str2 = str1.GetBuffer();//从string转换到CStringstring str1 = "ABC";CString str2 = str1.c_str();char*、TCHAR*转换CStringCString str(****)下⾯详细写⼀下其它转换///************************************************************************* 函数: TransCStringToTCHAR* 描述:将CString 转换为 TCHAR** ⽇期:************************************************************************/TCHAR* CPublic::CString2TCHAR(CString &str){int iLen = str.GetLength();TCHAR* szRs = new TCHAR[iLen];lstrcpy(szRs, str.GetBuffer(iLen));str.ReleaseBuffer();return szRs;}/************************************************************************* 函数: TCHAR2Char* 描述:将TCHAR* 转换为 char** ⽇期:************************************************************************/char* TCHAR2char(TCHAR* tchStr){int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算⼀个字符,因此不⽤普通计算长度char* chRtn = new char[iLen+1]wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为⾮负值return chRtn;}/************************************************************************* 函数: char2tchar* 描述:将 char* 转换为 TCHAR** ⽇期:************************************************************************/TCHAR *char2tchar(char *str){int iLen = strlen(str);TCHAR *chRtn = new TCHAR[iLen+1];mbstowcs(chRtn, str, iLen+1); return chRtn;}/************************************************************************* 函数: CString2char* 描述:将CString转换为 char** ⽇期:************************************************************************/char* CPublic::CString2char(CString &str){int len = str.GetLength();char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算⼀个长度memset(chRtn, 0, 2*len+1);USES_CONVERSION;strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));return chRtn;}WideCharToMultiByte和MultiByteToWideChar函数的⽤法⽀持Unicode编码,需要多字节与宽字节之间的相互转换WideCharToMultiByte的代码页⽤来标记与新转换的字符串相关的代码页。

CString, QString, char之间的转换

CString, QString, char之间的转换
const char *c_str2 = str2.toLatin1().data();
will make the application crash as the QByteArray has not been stored and hence no longer exists.
To convert a char* to a QString you can use the QString constructor that takes a QLatin1String, e.g:
const char *c_str2 = ba.data();
printf("str2: %s", c_str2);
return app.exec();
}
Note that it is necessary to store the bytearray before you call data() on it, a call like the following
CString, QString, char*之间的转换
传给未分配内存的const char* (LPCTSTR)指针.
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针.
operator const char * () const
可以这样
printf("%s\n", (const char*) cstr);
或是copy出来
char buf[1024];
strcpy(buf, (const char*) cstr);

String类字符串与常用数据类型转换

String类字符串与常用数据类型转换

一、String类字符串与字符数组1、构造字符串对象常量对象:”暨南大学”、”程序设计”、”123.56”、”ABC”字符串对象:String s; s=new String(“we are students.”);声明与创建分步完成。

而String s=new String(“we are students.”); 声明与创建一步完成。

2、由字符数组来构造字符串:如:char a[]={‘J’,’a’,’v’,’a’};String s=new String(a);注意:System.out.print(a);显示是Java。

System.out.print(“”+a); 显示是什么呢?System.out.print(s); 显示也是Java。

3、String(char []b,int startIndex,int count)提取字符数组b中的一部分字符创建一个字符串对象。

4、引用字符串常量对象:如String s1,s2; s1=”123”;s2=”abc”;5、字符串比较的运算符:==和equals(String s)的功能equals(String s)的功能:比较当前字符串对象的实体是否与参数s指定的字符串的实体相同;==的功能:是字符串对象的引用比较,相同则为true。

例:Public static void main(String args[]){String S1,S2;S1=new String(“暨南大学”);S2=new String(“暨南大学”);System.out.println(S1.equals(S2)); //输出结果是trueSystem.out.println(S1==S2); //输出结果是falseString S3,S4;S3=“暨南大学”;S4=“暨南大学”;System.out.println(S3.equals(S4)); //输出结果是trueSystem.out.println(S3==S4); //输出结果是trueSystem.out.println(S3==S1); //输出结果?System.out.println(S3==S2); //输出结果?}字符串来创建字符数组:1、public void getChars(int start,int end,char[] c,int offset)2、public char[] toCharArray()二、字符串与基本数据的相互转换1、数字字符构成的字符串转换成数值型数据:在ng包中的Integer类调用其类方法public static int parseInt(String s)可以将由数字字符组成的字符串转换成int型数据。

string类的字符串替换方法_概述及解释说明

string类的字符串替换方法_概述及解释说明

string类的字符串替换方法概述及解释说明1. 引言1.1 概述本文旨在介绍和解释Java中String类的字符串替换方法。

String是Java中最常用的类之一,用于表示和操作字符串。

字符串替换是一个常见且重要的操作,它可以帮助我们在字符串中找到指定的字符或子串,并将其替换为新的字符或子串。

1.2 文章结构本文分为四个主要部分:引言、String类的字符串替换方法、解释说明和结论。

在引言部分,我们将简要介绍文章的背景和目标,并概括讨论将要涉及到的主题。

接下来,在String类的字符串替换方法部分,我们将详细介绍三种不同的替换方法,包括方法一、方法二和方法三。

然后,在解释说明部分,我们将解释每种方法的工作原理、使用场景以及提供示例说明。

最后,在结论部分,我们将总结所发现的内容并探讨这些方法的优缺点,并展望未来它们可能发展的方向。

1.3 目的本文旨在帮助读者全面理解和掌握Java中String类提供的字符串替换方法。

通过深入研究每个方法的原理和应用场景,读者将能够更好地运用这些方法来处理自己的字符串操作需求。

我们希望读者通过本文的阅读和学习,能够增强对String类的理解,提升编程能力,并为未来的开发工作打下坚实的基础。

2. String类的字符串替换方法2.1 方法一String类提供了replace()方法来进行字符串替换。

该方法接受两个参数,第一个参数是要被替换的子串,第二个参数是替换后的新子串。

它返回一个新的字符串,其中所有匹配的子串都被替换成新的子串。

示例代码如下:```javaString str = "Hello, world!";String newStr = str.replace("world", "universe");System.out.println(newStr);```输出结果为:```Hello, universe!```2.2 方法二除了使用replace()方法进行简单字符串替换外,String类还提供了replaceAll()方法。

C++中string,wstring,CString常用方法

C++中string,wstring,CString常用方法

C++中string,wstring,CString常⽤⽅法⼀.概念 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳⼊C++标准之中.wstring是操作宽字符串的类.C++标准程序库对于string的设计思维就是让他的⾏为尽可能像基本类型,不会在操作上引起什么⿇烦。

CString是对string(字符串)和wstring(宽字符串)的⼀个封装,常⽤在mfc中.⽤来解决编码问题的. string/wstring和CString在使⽤中,要根据实际环境选取。

CString是MFC⾥的,string是STL⾥的,后者通⽤性强些,前者功能全些。

⼀般在mfc中使⽤CString更为好⼀些。

⼆.常⽤⽅法string/wstring常⽤⽅法:string类的构造函数:string(const char *s); //⽤const字符串s初始化string(int n,char c); //⽤n个字符c初始化此外,string类还⽀持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。

当构造的string太长⽽⽆法表达时会抛出length_error异常;string类的字符操作:const char &operator[](int n)const;const char &at(int n)const;char &operator[](int n);char &at(int n);operator[]和at()均返回当前字符串中第n个字符的位置,但at函数提供范围检查,当越界时会抛出out_of_range异常,下标运算符[]不提供检查访问。

const char *data()const;//返回⼀个⾮null终⽌的c字符数组const char *c_str()const;//返回⼀个以null终⽌的c字符串int copy(char *s, int n, int pos = 0) const;//把当前串中以pos开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数⽬string的特性描述:int capacity()const; //返回当前容量(即string中不必增加内存即可存放的元素个数)int max_size()const; //返回string对象中可存放的最⼤字符串的长度int size()const; //返回当前字符串的⼤⼩int length()const; //返回当前字符串的长度bool empty()const; //当前字符串是否为空void resize(int len,char c);//把字符串当前⼤⼩置为len,并⽤字符c填充不⾜的部分string类的输⼊输出操作:string类重载运算符operator>>⽤于输⼊,同样重载运算符operator<<⽤于输出操作。

字符串数组转为字符串

字符串数组转为字符串

字符串数组转为字符串在程序开发过程中,经常需要将字符串数组转换为字符串,以便进行一系列字符的处理操作,比如字符串的拼接、输入输出等等。

字符串数组与字符串之间的转换也是较为常见的操作,本文将会介绍字符串数组转为字符串的方法。

一、使用for循环遍历字符串数组在程序中,我们可以通过使用for循环语句遍历字符串数组,然后使用StringBuffer或StringBuilder来实现字符串的拼接,从而获得转换后的字符串。

以下是示例代码:```String[] strArr = {"hello", "world", "!"};StringBuilder sb = new StringBuilder();for (int i = 0; i < strArr.length; i++) {sb.append(strArr[i]);}String str = sb.toString();```以上示例代码中,首先定义了一个字符串数组strArr,然后定义一个StringBuilder对象sb,用于存储拼接后的字符串。

通过for循环遍历字符串数组,将每个字符串拼接到sb中,最后调用toString()方法将其转换为字符串。

二、使用String类的join方法在Java 8中,String类提供了一个join方法,可以非常方便地将字符串数组转换为字符串。

以下是示例代码:```String[] strArr = {"hello", "world", "!"};String str = String.join("", strArr);```以上示例代码中,使用join方法实现了将字符串数组转换为字符串的操作。

该方法的第一个参数是分隔符,这里传入空字符串,表示不使用分隔符。

第二个参数是要转换的字符串数组。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CString,字符数组,string 互相转换
有三个函数可以将字符串的内容转换为字符数组和C—string
1.data(),返回没有”\0“的字符串数组
2,c_str(),返回有”\0“的字符串数组
3,copy()
string 转CString
CString.format("%s", string.c_str());
用c_str()确实比data()要好.
CString转string
string s(CString.GetBuffer());
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.
char* 转CString
CString.format("%s", char*);
CStringstrtest;
char * charpoint;
charpoint="give string a value";
strtest=charpoint; //直接付值
CString转char *
CStringstrtest="wwwwttttttt";
charpoint=strtest.GetBuffer(strtest.GetLength());
CString转换char[100]
char a[100];
CStringstr("aaaaaa");
strncpy(a,(LPCTSTR)str,sizeof(a));
CStringstr="aaa";
char* ch;
ch=(char*)(LPCTSTR)str;
char* 转string
string s(char *);
你的只能初始化,在不是初始化的地方最好还是用assign().
string 转char *
char *p = string.c_str();
_bstr_t与CString互转
_bstr_tbstr
CStringcstr;
CString -> _bstr_t: bstr=(_bstr_t)cstr;
_bstr_t ->CString: cstr=(LPCSTR)bstr;
BSTR 与CString互转
BSTR bstr;
CStringcstr;
CString ->BSTR :bstr=cstr.AllocSysString(); BSTR ->CString :cstr=(LPCSTR)bstr;。

相关文档
最新文档