看帖神器
未名空间
追帖动态
头条新闻
每日新帖
最新热帖
新闻存档
热帖存档
文学城
虎扑论坛
未名空间
北美华人网
北美微论坛
看帖神器
登录
← 下载
《看帖神器》官方
iOS App
,体验轻松追帖。
大牛们,来看看这道特大公司的题
查看未名空间今日新帖
最新回复:2020年6月18日 14点15分 PT
共 (5) 楼
返回列表
订阅追帖
只看未读
更多选项
阅读全帖
只看图片
只看视频
查看原帖
a
antilawyer
4 年多
楼主 (未名空间)
假设下面的class已经写好了,你可以直接用
class Stream {
public:
virtual void writeChar(char c) = 0;
virtual char readChar() = 0;
};
现在要你写下面的code
void writeString(Stream* stream, const std::string& string)
{
for(auto c : string)
stream.writeChar(string[i]);
}
问题是,还有在上面的code加一些什么,你就能知道这个const std::string& string
已经写完了。当你接下来读这个const std::string& string的时候你就能根据这个信
息把整个const std::string& string读出来。你只能用class stream, 不能另加
global variable 什么的。
x
xiaoduoduo
4 年多
2 楼
你这个i从哪里来的
e
edison2012
4 年多
3 楼
在stream里面先写string旳长度,再写string。
【 在 antilawyer (antilawyer) 的大作中提到: 】
: 假设下面的class已经写好了,你可以直接用
: class Stream {
: public:
: virtual void writeChar(char c) = 0;
: virtual char readChar() = 0;
: };
: 现在要你写下面的code
: void writeString(Stream* stream, const std::string& string)
: {
: for(auto c : string)
: ...................
a
antilawyer
4 年多
4 楼
对不起,正确的code应该这样的
void writeString(Stream* stream, const std::string& string)
{
for(auto c : string)
stream.writeChar(c);
}
【 在 xiaoduoduo (水佬倌) 的大作中提到: 】
: 你这个i从哪里来的
h
helpme
4 年多
5 楼
前面有人说了,这就是最简单的encoding/decoding:“
void writeString(Stream& stream, const std::string& s)
{
char l = (char) s.length();
stream.writeChar(l);
for (auto c : s)
stream.writeChar(c);
}
std::string readString(const Stream& stream)
{
int l = (int) stream.readChar();
std::string t;
for (auto i = 0; i < l; ++i)
t += stream.readChar();
return t;
}
”
如果输入string特别长size超过char最大值的话,可以多次读写,要再讨论。
【 在 antilawyer (antilawyer) 的大作中提到: 】
: 对不起,正确的code应该这样的
: void writeString(Stream* stream, const std::string& string)
: {
: for(auto c : string)
: stream.writeChar(c);
: }
请输入帖子链接
收藏帖子
假设下面的class已经写好了,你可以直接用
class Stream {
public:
virtual void writeChar(char c) = 0;
virtual char readChar() = 0;
};
现在要你写下面的code
void writeString(Stream* stream, const std::string& string)
{
for(auto c : string)
stream.writeChar(string[i]);
}
问题是,还有在上面的code加一些什么,你就能知道这个const std::string& string
已经写完了。当你接下来读这个const std::string& string的时候你就能根据这个信
息把整个const std::string& string读出来。你只能用class stream, 不能另加
global variable 什么的。
你这个i从哪里来的
在stream里面先写string旳长度,再写string。
【 在 antilawyer (antilawyer) 的大作中提到: 】
: 假设下面的class已经写好了,你可以直接用
: class Stream {
: public:
: virtual void writeChar(char c) = 0;
: virtual char readChar() = 0;
: };
: 现在要你写下面的code
: void writeString(Stream* stream, const std::string& string)
: {
: for(auto c : string)
: ...................
对不起,正确的code应该这样的
void writeString(Stream* stream, const std::string& string)
{
for(auto c : string)
stream.writeChar(c);
}
【 在 xiaoduoduo (水佬倌) 的大作中提到: 】
: 你这个i从哪里来的
前面有人说了,这就是最简单的encoding/decoding:“
void writeString(Stream& stream, const std::string& s)
{
char l = (char) s.length();
stream.writeChar(l);
for (auto c : s)
stream.writeChar(c);
}
std::string readString(const Stream& stream)
{
int l = (int) stream.readChar();
std::string t;
for (auto i = 0; i < l; ++i)
t += stream.readChar();
return t;
}
”
如果输入string特别长size超过char最大值的话,可以多次读写,要再讨论。
【 在 antilawyer (antilawyer) 的大作中提到: 】
: 对不起,正确的code应该这样的
: void writeString(Stream* stream, const std::string& string)
: {
: for(auto c : string)
: stream.writeChar(c);
: }