当我事先不知道会有多少数据进入时,如何从流中读取?现在我只选了一个偏高的数字(如下面的代码所示),但不能保证我不会得到更多.
所以我在循环中一次读取一个字节,每次调整数组大小?听起来太大了调整: - /
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(ip, port);
Stream stm = tcpclnt.GetStream();
stm.Write(cmdBuffer, 0, cmdBuffer.Length);
byte[] response = new Byte[2048];
int read = stm.Read(response, 0, 2048);
tcpclnt.Close();
Run Code Online (Sandbox Code Playgroud) 我有一个函数将文件提取到字节数组(数据).
int contentLength = postedFile.ContentLength;
byte[] data = new byte[contentLength];
postedFile.InputStream.Read(data, 0, contentLength);
Run Code Online (Sandbox Code Playgroud)
后来我使用这个字节数组来构造一个System.Drawing.Image对象(其中data是字节数组)
MemoryStream ms = new MemoryStream(data);
Image bitmap = Image.FromStream(ms);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常"ArgumentException:参数无效."
原始发布的文件包含500k jpeg图像...
任何想法为什么这不起作用?
注意:我向你保证我有一个有效的理由转换为字节数组然后转换为内存流!!
在c#中逐行过滤流/阅读器的最简单方法是什么(有点像将sed放在管道中间).我想将iCalendar文件提供给DDay.iCal,但DDay.iCal在"VERSION:5.1.1"上死亡,因为它需要一个数字或数字SEMICOLON编号(其中数字是数字(DOT数字)?所以最后一个"."是意外).
我想要做的是过滤VERSION:行到像"VERSION:5.1"这样无害的东西,这样解析器就不会死了.
更新:好的,这是一个示例:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
Run Code Online (Sandbox Code Playgroud)
现在,DDay.iCal解析器不喜欢"VERSION:5.1.1",所以我想用像"VERSION:5.1"这样无害的东西替换它.
解析器接口使用读取器或流.
无论如何,我试图在这里使用代码并且它可以工作(在过滤的ReadLine之上重新实现TextReader).
我想解析streamReader中的用户输入.我的代码是:
string txt = txtin.text ; //<~~ txtin is something like root:x:1:1....
using (TextReader reader = new TextReader( txt))
{
string line = "";
while ((line = reader.ReadLine()) != null)
{
string userName = line.Substring(0, line.IndexOf(':'));
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
无法创建抽象类或接口'System.IO.TextReader'的实例
有没有办法限制从java中的ObjectInputStream读取的最大缓冲区大小?
如果很明显有问题的对象是恶意巨大的,那么我想停止反序列化.
当然,有ObjectInputStream.read(byte [] buf,int off,int len),但我不想受到分配的性能损失,比如byte [1000000].
我在这里错过了什么吗?
我知道Python中有一个StringIO流,但是在Python中有这样的文件流吗?还有更好的方法让我查看这些东西吗?文件等......
我试图将"流"传递给我制作的"作家"对象.我希望我可以将文件句柄/流传递给这个编写器对象.
我可以在c中创建一个匿名流吗?我不想在文件系统上创建一个新文件,只需要一个函数可以写入的流,而另一个函数可以从它传播.不是c ++,c.
我之前做过......但我忘记了.我有一个包含一些数据的文件:
0.5 0.6 0.7 1.2 1.5
如何在c ++中阅读?我用流做了...类似于:
float var = 0;
stream >> var;
Run Code Online (Sandbox Code Playgroud) 我正在编写一些必须通过TCP/IP发送数据的C++代码.我希望这段代码可以在Linux/Windows/Osx上移植.现在,因为这是我第一次编写便携式网络代码,我基本上需要一些简单的函数来添加到某些对象,如:
class myclass{
...member...
public:
string serialize(){
std::ostringstream out();
out << member1;
out << member2;
out << member3;
return out.str();
}
}
Run Code Online (Sandbox Code Playgroud)
......这就是我现在所需要的一切.无论如何,我开始阅读ostringstream相关的文档,并结果发现二进制/文本问题.事实上,它会将换行符转换为everysystem的正确顺序.例如,假设一个成员是一个指向const char*foo ="Hello \nMan \n"的指针,它将在linux上以某个字节顺序翻译,另一个在Windows上翻译......依此类推.我的字节将去一个数据包在互联网上,不同的操作系统的机器会读他们,我想麻烦会occurr ......现在我读,我可能会初始化ostringstream与ostringstream(ios::bin)...它会解决这个问题(前提是我将使用反序列化功能,将使用istringstream(ios::bin)???我对整个图片感到困惑,如果你可能花费一些澄清线,将非常感激.
谢谢.
我想读取然后将文件的内容存储在数组中,但这不起作用:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main () {
string content,line,fname;
cout<<"Execute: ";
cin>>fname;
cin.ignore();
cout<<endl;
//Doesn't work:
ifstream myfile(fname);
if(!myfile.is_open()){
cout<<"Unable to open file"<<endl;
}else{
while(!myfile.eof()){
getline(myfile,line);
//I don't know how to insert the line in the string
}
myfile.close();
}
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)