请问是否可以在用cout输出时,实现 C/C++输出时将空格转化为其他可见字符,例如'+'.

如题所述

第1个回答  2011-07-17
你好:
可以。
可以重载IO函数,实现输出时转换空格为其他字符;
//////////////
// .h 头文件中声明
// #include <iostream>
std::ostream& operator<<(std::ostream &out, char *szTemp);
/////////////////
// .cpp 文件中重载函数实现
// 函数中调用strlen方法,需在头文件添加#include <cstring>
ostream& operator<<(ostream &out, char *szTemp);
{
for(int i = 0; i < strlen(szTemp); i++)
if(szTemp[i] == 32) // 空格的ASCII码为32
{
szTemp[i] = '+'; // 替换空格为符号 +
}
//
return out<<szTemp;
}
第2个回答  2011-07-19
\"
转义序列
第3个回答  2011-07-16
自己写吧本回答被提问者采纳
第4个回答  2011-07-16
当然不行,c语言中有printf格式化,但必须是%加一个字母,然后按照一定的格式输出。
并没有一种语言级的机制能够进行这样的替换。
无论是c标准库,还是C++的STL,都没有一个函数能做这个事情,你以自己写一个函数,我这里有参考代码:
// 替换字符串中特征字符串为指定字符串
int ReplaceStr(char *sSrc, char *sMatchStr, char *sReplaceStr)
{
int StringLen;
char caNewString[MAX_MSG_LENGTH];

char *FindPos = strstr(sSrc, sMatchStr);
if( (!FindPos) || (!sMatchStr) )
return -1;

while( FindPos )
{
memset(caNewString, 0, sizeof(caNewString));
StringLen = FindPos - sSrc;
strncpy(caNewString, sSrc, StringLen);
strcat(caNewString, sReplaceStr);
strcat(caNewString, FindPos + strlen(sMatchStr));
strcpy(sSrc, caNewString);

FindPos = strstr(sSrc, sMatchStr);
}

return 0;
}
相似回答