【学习笔记】C++中常用的字符串转换和实现能换行的printf

【技巧一】首先是C++大小写转换:

//------------------------------------------

//C++大写转小写
char*  toLowerStr(string &str){
	char *out=const_cast<char*>(str.c_str());
	return strlwr(out);
}

//C++大写转小写
char* toLowerStr(const char* str){
	char *buf=new char[strlen(str)+1];
	strcpy(buf, str);  
	return strlwr(buf);
}


//------------------------------------------

//C++小写转大写
char* toUpperStr(string &str){
		char *out=const_cast<char*>(str.c_str());
		return strupr(out);
}

//C++大写转小写
char* toUpperStr(const char* str){
	char *buf=new char[strlen(str)+1];
	strcpy(buf, str);  
	return strupr(buf);
}

//------------------------------------------

C++使用示例:

	string str =".Png";
	printf ("转换 %s  \n",toLowerStr(str));
	printf ("转换 %s  \n",toLowerStr(str.c_str()));
	printf ("转换 %s  \n",toUpperStr(str));
	printf ("转换 %s  \n",toUpperStr(str.c_str()));
【技巧二】常见的C++字符类型转换:

1.string 转 const char*
string s ="abc";
const char* c_s = s.c_str();

2. const char* 转 string
const char* c_s ="abc";
string s(c_s);

3. const char* 转 char*
const char* str="abc";
char* pc =new char[strlen(str)+1];
strcpy(pc,str)

4. char* 转 const char*
const char* cpc;
char* pc="abcde";
cpc=pc;

5. string 转 char *

char *p = const_cast<char*>(s.c_str());


//TCHAR*转const char* 支持中文
const char* TCHAR2char(TCHAR* tchStr) 

DWORD dwNum = WideCharToMultiByte (936, 0, tchStr, -1, NULL,0,NULL, FALSE);


char *pwText = new char[dwNum];
WideCharToMultiByte (936, 0,tchStr, -1, pwText, dwNum,NULL, FALSE);
return pwText;



//const char*转TCHAR* 支持中文
TCHAR *char2TCHAR(const char *str)
{
DWORD dwNum = MultiByteToWideChar (936, 0, (char*)str, -1, NULL, 0);


TCHAR *pwText = new TCHAR[dwNum];
MultiByteToWideChar (936, 0,(char*) str, -1, pwText, dwNum);
return pwText;
}


【技巧三】在C++中实现一个带换行的printf输出

另外在C++里的printf不是带换行的,需要加上"\n"。

如果想实现一个java一样的printfln带自动换行的输出打印功能。

可以这样写,C++代码如下:

//和printf一样,结尾加个换行符
void printfln(const char *format, ...) 
{        
	va_list args;
	va_start(args, format);    
	vprintf(format, args);
	printf("\n");
	va_end(args);    
} 
使用的时候和C++默认的printf一样,但会自动加个换行。


【技巧四】在C++中实现字符串替换replace方法

	void string_replace(string&s1,const string&s2,const string&s3)
	{
		string::size_type pos=0;
		string::size_type a=s2.size();
		string::size_type b=s3.size();
		while((pos=s1.find(s2,pos))!=string::npos)
		{
			s1.replace(pos,a,s3);
			pos+=b;
		}
	}

【技巧五】加入占用宽度控制数字 
使用printf格式化输出时,每个控制字符可以写成%nC的形式,如%10d, %12f, %5c, %20s等等,

其对应的是不足部分左侧补空格,实现右对齐效果;

若要不足部分右侧补空格,只需要在宽度字符前加-符号即可,如%-12f,此时实现的是左对齐效果。


猜你喜欢

转载自blog.csdn.net/sjt223857130/article/details/79978241