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

原创 2018年04月17日 18:04:47

【技巧一】首先是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,此时实现的是左对齐效果。


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sjt223857130/article/details/79978241

C++中换行符‘\n’和控制符‘endl’的区别(cout和printf区别)

1.显示字符串时,在字符串中包含换行符,而不是在末尾加上endl,可以减少输入量 2.如果生成一个空行,则两种方法的输入量相同,但对大多数人而言输入endl更为方便 3.显示引号括起来的字符串通常使用...
  • guorongronghe
  • guorongronghe
  • 2017-10-11 13:49:41
  • 278

如何在printf中换行

如何在printf中换行 // C2001b.cpp     printf("Hello,/n/  world/n");     printf("Hello,/             /nworld...
  • jy04610
  • jy04610
  • 2008-09-22 22:39:00
  • 1030

用C和C++,两种方式实现C语言中的printf函数

理论准备 C++中的类C可变形参函数 首先,我们来看一下C++中的类C可变形参函数。可变形参函数,表示函数形参的类型和个数都可以变化。C语言中的 printf, scanf 就是最常见的可变形参函数。...
  • friendbkf
  • friendbkf
  • 2015-05-20 21:36:34
  • 1992

【C/C++】利用可变参数模拟实现printf

一、printf 功能 printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。 原型 int printf( const char* format , [argument]...
  • qq_31828515
  • qq_31828515
  • 2016-07-27 15:45:02
  • 1107

linux下printf实现不换行打印(printf显示不加换行的缓冲问题)

在学习调试linux的程序时,发现了一个加换行(\n)会实时显示,不加换行则会卡住最后一起显示的情况。 只要把printf(“1”);改成printf(”1\n”); printf(”2”)改成p...
  • wangtingyao1990
  • wangtingyao1990
  • 2015-11-25 14:12:25
  • 1180

通过JLink的SWD接口实现printf功能

通过JLink的SWD接口实现printf功能 Printf函数在单片机调试过程中可谓功不可没,开发人员可以很直观很方便的获取当前程序的运行状态。但在例如STM32这样的片子中,想要实现printf...
  • gtkknd
  • gtkknd
  • 2015-02-02 21:27:43
  • 1250

c++ printf 使用

1.调用格式为 printf("格式化字符串>", 参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟...
  • sunyongsunyong
  • sunyongsunyong
  • 2013-03-06 22:04:39
  • 2629

Java学习笔记1:Java中有关print、println、printf的用法和区别

Java学习笔记1:Java中有关print、println、printf的用法和区别 最近在学习java,写一些笔记记录下。 1.print()函数是一般的标准输出,但是不换行。 2.prin...
  • Allenlzcoder
  • Allenlzcoder
  • 2017-10-16 14:36:11
  • 395

C++模板实现printf

要函数实现接受可变的参数模型,有三种方法。 第一,通过C语言的va_list结构,以及va_start、va_arg、va_end来实现。 如: void print(char *msg, .....
  • Jammg
  • Jammg
  • 2016-02-24 23:29:37
  • 1010

printf 输出格式控制专题

Turbo C2.0 标准库提供了两个控制台格式化输入、 输出函数printf( ) 和scanf(), 这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。     printf()函...
  • trustnature
  • trustnature
  • 2012-09-22 11:12:00
  • 6349
收藏助手
不良信息举报
您举报文章:【学习笔记】C++中常用的字符串转换和实现能换行的printf
举报原因:
原因补充:

(最多只允许输入30个字)