关于Cstring::format()的疑问

huangdi7922 2010-07-16 04:44:27
memset(strRead,0,1024);
strSend="";
len=file.Read(strRead,1024);
if (len<=0) break;
strSend.Format("%d %s",len,strRead);
lenSend=strSend.GetLength();



当len=1024时,第一次lenSend=1029,然后就都是1031了,为什么啊?
急等着用,大家帮忙解释一下
...全文
185 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaanxiwangpeng 2010-07-19
  • 打赏
  • 举报
回复
顶一下
huangdi7922 2010-07-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 huangdi7922 的回复:]
自己顶一下
[/Quote]
谢谢,楼上,我在别的地方相似的调试却和这个结果不同,哎,郁闷啊,
不过我知道是cstring的问题,是它的长度变化,并且是读文件才变化,
不管了,我换成char数组了,问题解决了
jingyuge 2010-07-17
  • 打赏
  • 举报
回复
帮忙顶~
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
自己顶一下
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 alfwolf 的回复:]

WORD len;用来存放长度
BYTE *buff;用来作为数据缓存
readfile后得到len
buff就new len+sizeof(WORD)大小
把len写进buff前sizeof(WORD),再把strRead写进后面一段缓存
sendto使用buff, 发送的长度就是你new的buff的长度
发送完毕后delete [] buff
[/Quote]

发送的是字符串,怎么写?
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 huangdi7922 的回复:]

引用 12 楼 sensan 的回复:

char strRead[1025];

memset(strRead,0,1025);
len=file.Read(strRead,1024);
...

试试

变成len=1024,第一次lenSend=1032,然后就都是1034了
[/Quote]
还是一样
jogger007 2010-07-16
  • 打赏
  • 举报
回复
strSend.Format("%d %s",len,strRead);
注意:
%d也是要花空间的。我怀疑strSend有问题。
在获取长度之前strRead[1024] = '\0';试试
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sensan 的回复:]

char strRead[1025];

memset(strRead,0,1025);
len=file.Read(strRead,1024);
...

试试
[/Quote]
变成len=1024,第一次lenSend=1032,然后就都是1034了
alfwolf 2010-07-16
  • 打赏
  • 举报
回复
WORD len;用来存放长度
BYTE *buff;用来作为数据缓存
readfile后得到len
buff就new len+sizeof(WORD)大小
把len写进buff前sizeof(WORD),再把strRead写进后面一段缓存
sendto使用buff, 发送的长度就是你new的buff的长度
发送完毕后delete [] buff
stonewater 2010-07-16
  • 打赏
  • 举报
回复
memset(strRead,0,1024);
你strRead大小是1024吗
len=file.Read(strRead,1024);
从这儿看你应该至少要1025大小啊
strSend.Format("%d %s",len,strRead);
从这个看,strRead里面要全是字符串,不能有'\0';
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sensan 的回复:]

char strRead[1025];

memset(strRead,0,1025);
len=file.Read(strRead,1024);
...

试试
[/Quote]

我想过,可是怎么加到数据的前面啊?
我想一次把长度标识和数据加在一起发送过去
cpp2017 2010-07-16
  • 打赏
  • 举报
回复
使用节构体.

struct myData
{
WORD wLen;
char content[1024];

}
sensan 2010-07-16
  • 打赏
  • 举报
回复
char strRead[1025];

memset(strRead,0,1025);
len=file.Read(strRead,1024);
...

试试
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 alfwolf 的回复:]

如果想加长度,那就不要用这种方式,预留两个字节存放长度就行了,后面的就是你要发送的数据段。
[/Quote]

怎么弄?请指点,急着用,先谢谢了
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huangdi7922 的回复:]

这是个udp发送文件的程序,我想在每次发送的数据前面加上长度,对方确认是否正确接收
[/Quote]

1024 ...............
就是比strRead的内容多了"1024 "
alfwolf 2010-07-16
  • 打赏
  • 举报
回复
如果想加长度,那就不要用这种方式,预留两个字节存放长度就行了,后面的就是你要发送的数据段。
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cpp2017 的回复:]

1031你是哪里看到的?看的时候同时看看内容是什么?
[/Quote]
我要加一个数据长度在数据前面,对方好确认
alfwolf 2010-07-16
  • 打赏
  • 举报
回复
像这样的代码将来lenSend究竟是多少还真难说呢,你的文件是纯文本的吗?文件是ANSI还是UNICODE?
发送数据就行了,为什么还要把数据转换到CString对象?
cpp2017 2010-07-16
  • 打赏
  • 举报
回复
1031你是哪里看到的?看的时候同时看看内容是什么?
huangdi7922 2010-07-16
  • 打赏
  • 举报
回复
这是个udp发送文件的程序,我想在每次发送的数据前面加上长度,对方确认是否正确接收
加载更多回复(4)
内容概要:本文围绕不确定环境下的多式联运路径优化问题展开研究,提出并实现了基于AFO算法、遗传算法(GA)和粒子群优化算法(PSO)的三种智能优化方法,并借助Matlab平台完成算法编程与仿真。研究构建了考虑时间、成本、转运风险等多重不确定因素的路径优化模型,系统比较了AFO、GA、PSO三种算法在收敛速度、全局寻优能力和稳定性方面的表现,同时引入Matlab自带的全局优化搜索器作为基准对照,深入分析各算法在复杂物流网络中的适用边界与性能差异。研究表明,AFO算法在解决此类组合优化问题时展现出更快的收敛效率和更强的局部规避能力。; 适合人群:具备一定Matlab编程基础与运筹优化知识,从事物流工程、交通运输规划、智能算法开发等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于多式联运、综合货运网络中的路径决策支持系统构建;②为不确定性条件下复杂路径规划问题提供智能算法选型依据与技术实现方案;③支持科研人员复现主流优化算法并开展横向性能对比实验,推动算法改进与实际落地。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析算法实现流程,重点理解目标函数设计、约束条件处理及参数敏感性分析部分,可通过调整问题规模与算法参数进行对比实验,进一步拓展至动态路径规划或大规模网络优化等延伸场景。
内容概要:本文研究了基于QLearning自适应强化学习的PID控制器在自主水下航行器(AUV)运动控制中的应用,通过Matlab代码实现了控制算法的仿真验证。该方法融合强化学习的在线自适应能力与传统PID控制的稳定性优势,利用QLearning算法动态优化PID控制器的比例、积分、微分参数,以应对水下复杂流体环境、模型不确定性及外部干扰等挑战,从而提升AUV轨迹跟踪的精度、鲁棒性与动态响应性能。文中系统阐述了AUV的六自由度非线性动力学建模过程、QLearning算法的状态空间与动作空间设计、奖励函数构造及训练机制,并详细说明了PID参数自整定的闭环控制架构。仿真结果表明,相较于传统固定参数PID控制器,该智能控制策略在多种工况下均展现出更优的控制效果,有效抑制了超调,加快了响应速度,并增强了抗干扰能力。; 适合人群:具备自动控制理论、强化学习基础及Matlab/Simulink仿真能力,从事水下机器人、智能控制、海洋工程、自动化等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于AUV、UUV等无人水下平台的高精度自主导航与运动控制;②为解决非线性、强耦合、时变系统的控制器参数自适应整定问题提供智能化解决方案;③作为强化学习与经典控制理论深度融合的技术范例,推动智能控制算法在海洋装备中的工程化应用。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点剖析QLearning的状态-动作-奖励机制设计、PID参数更新逻辑及仿真对比实验结果,有条件者可在更复杂的动力学模型或实际硬件平台上进一步验证与优化算法性能。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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