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