请教c++字符串替换问题

sunshine19870904 2012-09-23 04:42:48
我的mfc程序有一部分是要通过识别字符串中的个别字符来实现换行,所以我想把字符串中的标志字符替换成换行符“\r\n”,如"与十进制数1023等值的十六进制数为( )。|A.3FD|B.3FF|C.2FD|D.2FF"其中“|”换成“\r\n”来输出:
与十进制数1023等值的十六进制数为( )。
A.3FD
B.3FF
C.2FD
D.2FF
注:由于字符串是从数据库中读取的,经过了强制类型转换,所以不能识别"\r\n",我才想到这个办法的,求赐教~~~
...全文
209 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshine19870904 2012-10-08
  • 打赏
  • 举报
回复
呵呵,谢谢大家的帮助,已经解决,我最后选用的是replace这个函数,content.Replace("|","\r\n");
mymtom 2012-09-28
  • 打赏
  • 举报
回复
难道6楼的函数还不能实现吗?
sunshine19870904 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

没太看懂楼主意思,如果只是进制转换,也太简单了点吧。麻烦楼主再说明下。
[/Quote]
不是的亲,这道题只是一个例子,是我从数据库里读出来的试题,想想以固定格式输出,但是现在我无法换行,都在一行输出了,我设置的换行符经过类型转换认不出来了
sunshine19870904 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

不是很明白
我可以这样理解吗
你要做的事情是把|换成 换行符吗
为什么换成/r/n,这样字符串就不对了 ,多一个字节
直接换成/n
for(int i=0;i<string.getstrlength();i++)
{
char ch = string.getat(i);
if(ch != ‘|’)
{
ch = ‘/n’;
}
}
不知……
[/Quote]
是这个意思,但是我用的mfc换行符就是'\r\n',我先试试,因为这些试题都是从数据库中读出来的,经过类型转换成cstring类型,我无法实现他的换行
赵4老师 2012-09-25
  • 打赏
  • 举报
回复
用宽字符wchar_t[]处理带汉字文件。
赵4老师 2012-09-25
  • 打赏
  • 举报
回复
//GBK汉字内码范围(不包括A1xx~A9xx的标点符号英文字母特殊符号等)
//区码 ,位码
//81-A0 ,40-7E 80-FE
//AA-AF ,40-7E 80-A0
//B0-D6 ,40-7E 80-FE
//D7 ,40-7E 80-F9
//D8-F7 ,40-7E 80-FE
//F8-FE ,40-7E 80-A0
mymtom 2012-09-25
  • 打赏
  • 举报
回复
但是要注意有些汉字的编码的第二字节就是7C,与"|"的编码是相同的. 这时候就需要对汉字进行判断了
比如“億”GBK编码是 83 7C
mymtom 2012-09-25
  • 打赏
  • 举报
回复
[code=C/C++]
#include <stdio.h>

char *cvt(const char *src, char *dst)
{
int i, j;

j = 0;
for (i = 0; src[i]; i++)
if (src[i] == '|')
dst[j++] = '\r', dst[j++] = '\n';
else
dst[j++] = src[i];

dst[j] = '\0';

return dst;
}

int main(int argc, char *argv[])
{
char src[] = "与十进制数1023等值的十六进制数为( )。|A.3FD|B.3FF|C.2FD|D.2FF";
char dst[1024];

printf("%s\n", cvt(src, dst));

return 0;
}
[/Code]
Gloveing 2012-09-25
  • 打赏
  • 举报
回复
没说清楚!!
HAN-Kai 2012-09-25
  • 打赏
  • 举报
回复
没太看懂楼主意思,如果只是进制转换,也太简单了点吧。麻烦楼主再说明下。
ksintkgod_ttfu 2012-09-25
  • 打赏
  • 举报
回复
不会问题真的是 1023转16进制吧?
如果你不会算的话 用PC自带的计算机算一把 很简单的
希望能帮到lz
ksintkgod_ttfu 2012-09-25
  • 打赏
  • 举报
回复
不是很明白
我可以这样理解吗
你要做的事情是把|换成 换行符吗
为什么换成/r/n,这样字符串就不对了 ,多一个字节
直接换成/n
for(int i=0;i<string.getstrlength();i++)
{
char ch = string.getat(i);
if(ch != ‘|’)
{
ch = ‘/n’;
}
}
不知道是否是lz的意思
菜头叔 2012-09-25
  • 打赏
  • 举报
回复
1023的16进制=3FF

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧