各位帮帮忙

senlinzhiwang 2010-09-05 09:47:51
问题:
我从数据库中读出一个符串,然后用Find从其中查找一个指定的子串,但是无论如何也查找不了(字符串中包含要查找的子串),如果我把这个读出的字符串拷贝到代码里,然后再查找,就能查找到了。代码如下:
strtemp = (char*)(_bstr_t)(theApp.m_pRs->GetCollect("Title"));str += strtemp;<!--我怀疑是这里的问题-->

//str = "4 某钻井队要从以下10个可供选择的井位中确定5个钻井探油D:\\TextBase\\2.gif,目的是使总钻探费用最少。设10个井位的代号为D:\\TextBase\\3.gif,相应的钻探费为 ,并且选择井位时要满足下列限制条件:(1)或选择 和 ,或选择 ;(2)选择了 或 就不能选 ,反过来也一样 ";<!--这是从数据库中读出的字符串,如果把它代替上面的str,就能查出来--->
while(str.GetLength() > 0)
{
start = str.Find("D:\\TextBase\\",start);
if(start >= 0)<!--如果不用把读出的字符串拷贝到代码里,这里start永远是-1-->
....
}
真诚的请指教!!
...全文
177 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
senlinzhiwang 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 xianglitian 的回复:]
用word?
为什么不写文本文件
[/Quote]
测试了半天,现在能查找汉字了,但是,英文字符就是查找不到。
senlinzhiwang 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 xianglitian 的回复:]
用word?
为什么不写文本文件
[/Quote]
还是同样 的问题,当读数据时,里面的内容没了。请问一下,对文件的操作除了用CFile的Read和Write之外,还有其它的方法吗?
还有就是,char数组与CString之间如何转换?带汉字字符的转换方法。
senlinzhiwang 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 xianglitian 的回复:]
用word?
为什么不写文本文件
[/Quote]
正在测试!!!!
向立天 2010-09-06
  • 打赏
  • 举报
回复
用word?
为什么不写文本文件
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 xianglitian 的回复:]
这怎么可能
[/Quote]
就是这样的,我创建的是可读可写的,写入时没问题,读时内容就没了,为此我专门做了一个只读的来测试,先在里面写入内容,结果也是,到读时,内容就没了。我用的是Word,也许Word模板有问题。
向立天 2010-09-06
  • 打赏
  • 举报
回复
这怎么可能
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 xianglitian 的回复:]
引用 13 楼 wang_zheguilai 的回复:
引用 11 楼 xianglitian 的回复:
str += strtemp
-〉
str = strtemp
这样可以么

我的str 有值 的,也是一个字符串,两个合在一起。

能看出来str有值
我就是让你试一下
[/Quote]
我试过这种方法,还是不行。

至于18楼说的单步调试,我想大多数人都会在第一时间用这种方法,所以我自然是用了这种方法之后才求助的了。
走好每一步 2010-09-06
  • 打赏
  • 举报
回复
单步一下!看看各变量的变化。楼主先确认你数据库读写的是不是你所要的字符串。
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xx12xx12 的回复:]
strtemp = (char*)(_bstr_t)(theApp.m_pRs->GetCollect("Title"));
还有估计你这里这样转编码可能会出问题 这里是强制转换
问一句 你用的是ADO 还是别的?
[/Quote]
当然是ADO了,那你觉得用什么转换方法更合适?
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 xianglitian 的回复:]

然后可以读文件看看能不能查找到
如果可以至少是一种解决方案
就是通过中间文件过渡一下
[/Quote]
写入没问题,但是读取时,写入的内容没了,所以读出的是空字符串。
向立天 2010-09-06
  • 打赏
  • 举报
回复

然后可以读文件看看能不能查找到
如果可以至少是一种解决方案
就是通过中间文件过渡一下
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xianglitian 的回复:]
误会了
什么函数无所谓
我的意思是写文件看看有没有异常
[/Quote]
哦,你的意思 是把从数据库中读出的内容写到文件中,看看有没有异常对吗?
向立天 2010-09-06
  • 打赏
  • 举报
回复
误会了
什么函数无所谓
我的意思是写文件看看有没有异常
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xianglitian 的回复:]
writefile看看
[/Quote]
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped);
是这个函数吗?
没用过,我试试看。
向立天 2010-09-06
  • 打赏
  • 举报
回复
writefile看看
senlinzhiwang 2010-09-06
  • 打赏
  • 举报
回复
还有人有不同的思路吗?我想,是不是所用字符集的不同啊,从数据库中取出的是一种字符集,vc6中的是另一种字符集,我还把工程在Vs2010中试过,结果一样。不过也说不通啊,因为我单步调试的时候,显示的都是汉字啊。
向立天 2010-09-05
  • 打赏
  • 举报
回复
你的字符串是怎么写的
我的意思是说是不是应该这样
start = str.Find("D:\\\\TextBase\\\\",start);
senlinzhiwang 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xianglitian 的回复:]
start = str.Find("D:\\TextBase\\",start);
两个start?
[/Quote]
对,这个无碍,我每次都把start设置为0,然后再用它得到出现子串的位置,做完操作之后,又把它设置为0了, 所以每次进入 时,start都是0。
向立天 2010-09-05
  • 打赏
  • 举报
回复
start = str.Find("D:\\TextBase\\",start);
两个start?
senlinzhiwang 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zyq5945 的回复:]
估计是读出来的和自己写入的值不一样吧,用for循环比较下这两个字符串就清楚了.
[/Quote]
这个应该不存在吧?不管这两个字符串是不一样,只要里面有"D:\\TextBase\\”这个,就应该能查找得到啊,开始我也想可能是这个问题,我想是不是在读出的字符串里,"D:\\TextBase\\"发生了变化,比如多了一个空格之类的。但是,我把它改成"D"或'D',同样也查找不到。
加载更多回复(12)

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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