Error[8]: Undefined offset: 10, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用[+++] 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用[+++]或看起来有点怪异的[+++] 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

[+++]

上面代码段的实现可用如下语句替代:

[+++]

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 11, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用[+++]或看起来有点怪异的[+++] 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

[+++]

上面代码段的实现可用如下语句替代:

[+++]

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 12, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用或看起来有点怪异的[+++] 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

[+++]

上面代码段的实现可用如下语句替代:

[+++]

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 13, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用或看起来有点怪异的 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

[+++]

上面代码段的实现可用如下语句替代:

[+++]

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 14, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用或看起来有点怪异的 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

上面代码段的实现可用如下语句替代:

[+++]

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
cc++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型_C_内存溢出

cc++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型

cc++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型,第1张

概述c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型 字符串函数之间的转换,首先要先了解C++字符串的组成,C++提供了两种字符串的表示:C 风格的字符串和标准 C++引入的 string 类类型。

1. C 风格字符串

C 风格的字符串起源于 C 语言 并在 C++中继续得到支持。字符串被存储在一个字符数组中 一般通过一个 char*类型的指针来 *** 纵它 。

标准 C 库为 *** 纵 C 风格的字符串提供了一组函数,例如:

int strlen( const char* ); // 返回字符串的长度

int strcmp( const char*, const char* ); // 比较两个字符串是否相等

char* strcpy(char*, const char* ); // 把第二个字符串拷贝到第一个字符串中

标准 C 库作为标准的 C++的一部分被包含在其中。为使用这些函数,我们必须包含相关的 C 头文件#include <cstring>

1.1 不调用库函数,实现C风格字符串的常用基本函数
#include<iostream>#include<cstring>#include<cassert>using namespace std;/*返回字符串长度*/int MyStrlen(const char * ch){	assert(ch!=NulL);	int i=0,count=0;	const char *t=ch;	//用一个临时指针去遍历,防止改变原来指针指向。	while(t[i]!='#include <string>')	{		count++;		i++;	}	return count;}/*把第二个字符串拷贝到第一个字符串中,返回第一个字符串的首部指针。*/char* MyStrcpy(char *des,const char *src){	assert((des!=NulL)&&(src!=NulL));	int i=0;	char *add=des;	//用add记录des的首部。	while(src[i]!='size()')	{		des[i]=src[i];		i++;	}	des[i]='empty()';	return add;}/*比较两个字符串是否相等。相等则返回0,前一个字符串比后一个小则返回-1,否则返回1。*/int MyStrcmp(const char *ch1,const char *ch2){	assert((ch1!=NulL)&&(ch2!=NulL));	int i=0;	const char *str1=ch1;	//定义两个临时指针。	const char *str2=ch2;	while((str1[i]!='赋值 *** 作符 =')||(str2[i]!='加 *** 作符 + '))	{		if(str1[i]<str2[i])		{			return -1;		}		else if(str1[i]>str2[i])		{			return 1;		}		else		{			i++;		}	}	return 0;}int main(){	char ch[]="cavely";	char ch2[]="julia";	cout<<MyStrlen(ch)<<endl;	//6	cout<<MyStrcmp(ch,ch2)<<endl;	//-1	/*	下面这两句不能写成:	char ch3[100];	ch3=MyStrcpy(ch,ch2);	//数组名是一个地址【常量】。不能被赋值	*/	char *ch3;	ch3=MyStrcpy(ch,ch2);	cout<<ch3<<endl;	//julia	return 0;}

2.string 类类型

要使用 string 类型 必须先包含相关的头文件复合赋值 *** 作符 +=

string str("hello"); //①定义一个带初值的字符串

string str2; // ②定义空字符串

string str3( str ); //③用一个 string 对象来初始化另一个 string 对象

2.1 对字符串类的基本 *** 作:

(1)str的长度由

string str( "fa.disney.com" );int size = str.size();for ( int ix = 0; ix < size; ++ix )if ( str[ ix ] == '.' )    str[ ix ] = '_';
*** 作返回(不包含终止空字符),例如str.size()的值为5。

(2)使用

replace( str.begin(), str.end(), '.', '_' );
*** 作判断字符串是否为空,例如:str2.empty()。如果字符串中不含有字符,则 empty()返回布尔常量 true ,否则返回 false。

(3)还可以直接使用 拷贝字符串,例如:st2 = st3; // 把 st3 拷贝到 st2 中

(4)可以使用或看起来有点怪异的 将两个或多个字符串连接起来。例如,给出两个字符串

string s1( "hello, " );

string s2( "world\n" );

我们可以按如下方式将两个字符串连接起来形成第三个字符串

string s3 = s1 + s2;

如果希望直接将 s2 附加在 s1 后面 那么可使用 += *** 作符

s1 += s2;

(5)string 类型支持通过下标 *** 作符访问单个字符,例如,在下面的代码段中,字符串中的所有句号被下划线代替。

上面代码段的实现可用如下语句替代:

replace()是泛型算法中的一个,begin()和 end() *** 作返回指向 string 开始和结束处的迭代器(iterator) 。迭代器是指针的类抽象 ,由标准库提供。replace()扫描 begin()和 end()之间的字符。每个等于句号的字符,都被替换成下划线。

2.2 C 风格的字符串与 string 对象的转换

string 类型能够自动将 C 风格的字符串转换成 string 对象。例如,这使我们可以将一个 C 风格的字符串赋给一个 string 对象。

string s1;

const char *pc = "a character array";

s1 = pc; //OK

但是,反向的转换不能自动执行。对隐式地将 string 对象转换成 C 风格的字符串 string类型没有提供支持。例如下面,试图用 s1 初始化 str 就会在编译时刻失败。

char *str = s1; // 编译时刻类型错误

为实现这种转换,必须显式地调用名为 c_str()的 *** 作。名字 c_str()代表了 string 类型与 C 风格字符串两种表示法之间的关系。字面意思是,给我一个 C 风格的字符串表示——即 指向字符数组起始处的字符指针。为了防止字符数组被程序直接处理, c_str()返回了一个指向常量数组的指针 const char*

所以,正确的初始化应该是:const char *str = s1.c_str(); // OK

相关推荐:

从C/C++迁移到PHP判断字符类型的函数

从C/C++迁移到PHP——判断字符类型的函数_php基础

视频:C++ 手册教程-在线手册教程

C++ 教程 | C++ 手册教程 总结

以上是内存溢出为你收集整理的c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型全部内容,希望文章能够帮你解决c/c++字符串函数是什么类型和它是如何转换的?举例说明1. C 风格字符串2.string 类类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1211249.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存