不惜分数,只求真理,该死的字符串(其实会者不难...) 在一个字符串里的所有'后在插入一个',使其为'',VC如何实现?给点示范. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给一个基本思想:1。查找出所有的',记下index,可存在一个数组中。2。在index处插入',注意记下插入的次数,并正确修改后面index的值 用strtok一个一个找,找的同时把它拷到一个临时buf里,然后再拷回来(纯c实现) 是两个字符还是一个字符,我认为你这样子应该是两个字符,其实很好做到使用CString::Find( TCHAR ch, int nStart ) ,他返回从nStart位置开始的第一个ch字符,然后用InsertAt插入字符就可以了,不过自己要记得调整nStart的值 是Insert,写错了int pos(0);pos=str.Find('\'',pos);while(pos!=-1){ str.Insert(pos,'\''); pos+=2; pos=str.Find('\'',pos);}应该这样可以了,没有试过 或者是str.Insert(pos+1,'\'');因为是前后字符都是一样的,所以没关系,不过要是不同,就该用这一句 已经测试通过#include <string.h>#include <stdio.h>#include <windows.h>#include <iostream.h>char string[] = "123'456'789'00";char seps[]="'";char *token;char buff[100];void main( void ){ ZeroMemory(buff,100); printf( "%s\n\nTokens:\n", string ); token = strtok( string, seps ); while( token != NULL ) { strcat(buff,token); strcat(buff,"\""); token = strtok( NULL, seps ); } cout<<buff;} 最后buff里保存的就是你想要的 if (str.Find("''")==-1) str.Replace("'","''");else...同上所说,但要比较前后是否还有'。:) 如下代码即可搞定 int nStart = 0; while ((nStart = str.Find(_T("'"), nStart)) != -1) { str.Insert(nStart + 1, _T("'")); nStart = nStart + 2; } //以下是一个示例,在VC++、BCB中均调试通过char s[]="a'aaaa'aaaaa''";char *s1=new char[100],*s2=s1;while(*s) { *s1++=*s; if(*s++=='\'') ; *s1++='\''; } *s1='\0';//s2 便是你想要的结果。 jone7318(jone)的方法很好简洁有效 for(int i = 0; i< str.GetLength(); i++){ if(str.GetAt(i) == ''') { str.Insert(i+1,'''); i++;} } to:axinist(阿信) 你的str是什么类型? 同意 jone7318(jone) 。应该采用2个缓冲对拷的方法。快而且稳定。 大伙给您提供了这么多方法,够您挑着试了;解决问题,应该没问题Good Luck!!! try thisCString str = "asdf\'kasdjf\'";str.Replace("\'","\'\'"); 怎样在框架类CMainFrame中获取视图类CView类中的数据 真诚求教 win32 api MDI多文档程序怎么给子窗口的框架菜单动态添加一项 关于MFC的初学问题 请问内存中的int型的主机字节序。 怎样能正确输出这些字符? 得到窗口句柄hwnd后,如何才能操作该窗口的控件? 请问如何通过DirectShow截获摄像头传入的视频? 技术内幕上的一段程序,我看不太懂,请大家帮忙解释一下,谢谢! 一个问题,简单的问题! 玩过暗黑二没有,开头的画面上的暗黑二的火焰怎么写 请问我用VC++做的数据库程序怎样打包在线等待急用,
1。查找出所有的',记下index,可存在一个数组中。
2。在index处插入',注意记下插入的次数,并正确修改后面index的值
(纯c实现)
使用CString::Find( TCHAR ch, int nStart ) ,他返回从nStart位置开始的第一个ch字符,然后用InsertAt插入字符就可以了,不过自己要记得调整nStart的值
int pos(0);
pos=str.Find('\'',pos);
while(pos!=-1)
{
str.Insert(pos,'\'');
pos+=2;
pos=str.Find('\'',pos);
}
应该这样可以了,没有试过
str.Insert(pos+1,'\'');
因为是前后字符都是一样的,所以没关系,不过要是不同,就该用这一句
#include <stdio.h>
#include <windows.h>
#include <iostream.h>char string[] = "123'456'789'00";
char seps[]="'";
char *token;
char buff[100];void main( void )
{
ZeroMemory(buff,100);
printf( "%s\n\nTokens:\n", string );
token = strtok( string, seps );
while( token != NULL )
{
strcat(buff,token);
strcat(buff,"\"");
token = strtok( NULL, seps );
}
cout<<buff;
}
str.Replace("'","''");
else
...
同上所说,但要比较前后是否还有'。:)
int nStart = 0;
while ((nStart = str.Find(_T("'"), nStart)) != -1)
{
str.Insert(nStart + 1, _T("'"));
nStart = nStart + 2;
}
char *s1=new char[100],*s2=s1;
while(*s)
{ *s1++=*s;
if(*s++=='\'') ;
*s1++='\'';
}
*s1='\0';//s2 便是你想要的结果。
简洁有效
{
if(str.GetAt(i) == ''')
{
str.Insert(i+1,''');
i++;
}
}
你的str是什么类型?
Good Luck!!!
CString str = "asdf\'kasdjf\'";
str.Replace("\'","\'\'");