string转char char 转 string

char的初始化:

char name_buff[64];
char abc[10] = "ni hao bu";
const char *firstName = "nihao,";

    string转char*,:主要有三种方法,分别是:data(); c_str(); copy();
    string转char[],知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。

    char * 转string,char[] 转string是一样的:可以直接赋值。例如

const char *p03 = "hello";    string s = p03;    cout << s << endl;
char c01[8] = "nihaobu";    string s01 = c01;    cout << "s01:" << s01 << endl;



/*
	字符串、字符的拼接、互转

	string转char*
	string转char[]

	char * 转string	可以直接赋值。
	char[] 转string	可以直接赋值

*/


#if 1

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>

using namespace std;


int main()
{
	char greeting[6] = { 'H', 'e', 'l', 'l', 'o'/*, '\0'*/ };

	printf("Greeting message: %s\n", greeting);


	/* ===========================	01 字符串拼接	==================================== */
	char str1[12] = "Hello";
	char str2[12] = "World";
	char str3[12];
	int  len;

	/* 复制 str1 到 str3 */
	strcpy_s(str3, str1);
	printf("strcpy( str3, str1) :  %s\n", str3);

	/* 连接 str1 和 str2 */
	strcat_s(str1, str2);
	printf("strcat( str1, str2):   %s\n", str1);

	/* 连接后,str1 的总长度 */
	len = strlen(str1);
	printf("strlen(str1) :  %d\n", len);





	/*
		使用sprintf_s进行多字符串拼接
	*/
	char name_buff[64];
	const char *firstName = "nihao,";
	const char *secName = "jhy,";
	char abc[10] = "ni hao bu";
	string sha = "sha";
	//sprintf_s(name_buf, "%d-%d-%d__%02d-%02d-%02d-%03d", sys.wYear, sys.wMonth, sys.wDay, sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);	
	sprintf_s(name_buff, "%s%s%s%s", firstName, secName, abc, sha);			//string类型是C++中的,printf是C中的,因此无法输出。sprintf_s也不行。
	cout << __LINE__ << " strcat:" << name_buff << endl;
	sprintf_s(name_buff, "%s%s%s%s", firstName, secName, abc, sha.c_str());	//可以用sha.c_str()转化成char型的。就可以了。
	cout << __LINE__ << " strcat:" << name_buff << endl;



	/* ===========================	02 互转	==================================== */
	//	结论,char转string容易,string转char复杂。string类型容纳性更好。string.c_str()方便一些。
	/*	01
		string转char*	:主要有三种方法,分别是:data(); c_str(); copy();
	*/

	string str = "string->char";
	const char* p = str.data();		//加const  或者用char * p=(char*)str.data();的形式
	cout << __LINE__ << " __[string->char]: " << p << endl;
	/*const char*是不能直接赋值到char*的,这样编译都不能通过,
	理由:假如可以的话,那么通过char*就可以修改const char指向的内容了,这是不允许的。
	所以char*要另外开辟新的空间,即上面的形式。*/


	string str01 = "world";
	const char *p01 = str01.c_str();		//同上,要加const或者等号右边用char*
	cout << __LINE__ << " __[string->char]: " << p01 << endl;

	复杂也不好
	//string str02 = "hmmm";
	//char p02[50];
	//str02.copy(p02, 5, 0);		//这里5代表复制几个字符,0代表复制的位置,
	//* (p02 + 5) = '\0';			//注意手动加结束符!!!
	//cout << __LINE__ << "__[string->char]: " << p02 << endl;


	/*	02
	string转char[],知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。
	*/
	string pp = "dagah";
	char p04[8];
	int i;
	for (i = 0; i < pp.length(); i++)
		p04[i] = pp[i];
	p04[i] = '\0';
	printf("%s\n", p04);
	cout << p04 << endl;



	/*	03
		char * 转string,char[] 转string是一样的:可以直接赋值。
	*/
	const char *p03 = "hello";			//直接赋值
	string s = p03;
	cout << s << endl;

	char c01[8] = "nihaobu";
	string s01 = c01;
	cout << "s01:" << s01 << endl;

	getchar();
	return 0;
}


#endif 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值