设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Linux 程序设计专题讨论
›
在使用QTcpSocket读取数据时,如何去掉最后一个字符? ...
返回列表
查看:
1723
|
回复:
5
在使用QTcpSocket读取数据时,如何去掉最后一个字符?
[复制链接]
tsuibin
tsuibin
当前离线
积分
133
IP卡
狗仔卡
发表于 2009-11-2 16:17:26
|
显示全部楼层
|
阅读模式
我在使用QTcpSocket接收socket发送过来的数据
使用
QTextStream out(tcpSocket);
out << string << endl;
这种方式发送的数据
例如 发送hello
接收之后的长度时 6
最后一个貌似是一个换行符,但是使用\r 或者\n 判断 均不相等,
请问我如何过滤掉最后一个字符?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
x11
x11
当前离线
积分
2823
IP卡
狗仔卡
发表于 2009-11-3 14:52:26
|
显示全部楼层
你不要换行,干嘛还要 << endl
回复
支持
反对
使用道具
举报
显身卡
haohao_h
haohao_h
当前离线
积分
366
IP卡
狗仔卡
发表于 2009-11-3 20:08:26
|
显示全部楼层
Post by
x11;2042217
你不要换行,干嘛还要 << endl
x11兄又看到你了!感觉好亲切啊!
回复
支持
反对
使用道具
举报
显身卡
tsuibin
tsuibin
当前离线
积分
133
IP卡
狗仔卡
楼主
|
发表于 2009-11-4 00:22:55
|
显示全部楼层
Post by
x11;2042217
你不要换行,干嘛还要 << endl
做为结尾啊,不然用什么表示结束呢?:yun:
回复
支持
反对
使用道具
举报
显身卡
poet
poet
当前离线
积分
1357
IP卡
狗仔卡
发表于 2009-11-4 09:49:16
|
显示全部楼层
用 endl 是可以的,因为 endl 等于换行加 flush(清缓存,强制发送)。而且TCP毕竟是流式传输,加个结束符更好处理。
至于过滤掉最后一个字符,直接用string自己的函数就可以了嘛。
如果你不知道那个字符是什么,把接收之后的字符的ASC码一个一个的打印出来就好了。
回复
支持
反对
使用道具
举报
显身卡
tsuibin
tsuibin
当前离线
积分
133
IP卡
狗仔卡
楼主
|
发表于 2009-11-4 11:39:08
|
显示全部楼层
谢谢 poet,x11.
我在接收之后用chop去掉了末尾的那个字符,其实 QTextStream 也可以用 '\n' 来表示结束,但是如果什么都不写,比如 不写endl 或者 '\n',那么服务器端是读不到数据的,我还测试了另外一种情况,我使用flush作为结尾,但我发现,服务器端仍然没有读到数据,
我想可能只是将缓存中的数据写到socket 但没有结束符的原因。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表