对于第三方系统传过来的文件流能不能用string去接

对于第三方系统传过来的文件流能不能用string去接,第1张

对于第三方系统传过来的岩仔州文戚哗件流能用string去接。根据查询相关资料信息显示,用string去接文件流大的话会导致内存不足的粗蔽问题,建议使用适当的输入或输出流来处理文件流,此外,使用流处理文件可以提高代码的可读性和可维护性。

stream是用于设备输入与输出的。

fstream是stream的派生类,即文件流(设备对象是文件),作为文件在C++中的一仿喊芹个抽象对象。

string是C++中把备毕动态字符数组封装之后的一个新的使用更方便的字符串类。

在C++控制台程序中,该类名即为string,在MFC中,使用的是名为CString的字符串类渗型,它与API 函数的关系更紧密些。

function StringToFile(mString: stringmFileName: TFileName): Boolean

{ 返回字符串保存咐闷到文件是否成功 }

var

vFileChar: file of Char

I: Integer

begin

{$I-}

AssignFile(vFileChar, mFileName)

Rewrite(vFileChar)

for I := 1 to Length(mString) do Write(vFileChar, mString[I])

CloseFile(vFileChar)

{$I+}

Result := (IOResult = 0) and (mFileName <>'')

end{ StringToFile }

function FileToString(mFileName: TFileName): string

{ 返回从文件载入字符串 }

var

vFileChar: file of Char

vChar: Char

begin

Result := ''

{$I-}

AssignFile(vFileChar, mFileName)

Reset(vFileChar)

while not Eof(vFileChar) do begin

Read(vFileChar, vChar)

Result := Result + vChar

end

CloseFile(vFileChar)

{$I+}

end{ FileToString }

function StreamToString(mStream: TStream): string

{ 将内存流转换成字符串明手 }

var

I: Integer

begin

Result := ''

if not Assigned(mStream) then Exit

SetLength(Result, mStream.Size)

for I := 0 to Pred(mStream.Size) do try

mStream.Position := I

mStream.Read(Result[Succ(I)], 1)

except

Result := ''

end

end{ StreamToString }

function StringToStream(mString: stringmStream: TStream): Boolean

{ 返回将字符串保存到内存流是否成功 }

var

I: Integer

begin

Result := True

try

mStream.Size := 0

mStream.Position := 0

for I := 1 to Length(mString) do mStream.Write(mString[I], 1)

except

Result := False

end

end{ StringToStream }

///////End Source

/激简嫌//////Begin Demo

procedure TForm1.Button1Click(Sender: TObject)

var

vMemoryStream: TMemoryStream

begin

Memo1.Text := FileToString('C:\WINDOWS\Desktop\1.txt')

vMemoryStream := TMemoryStream.Create

try

Memo1.Lines.SaveToStream(vMemoryStream)

Memo2.Text := StreamToString(vMemoryStream)

finally

vMemoryStream.Free

end

end

procedure TForm1.Button2Click(Sender: TObject)

var

vMemoryStream: TMemoryStream

begin

StringToFile(Memo2.Text, 'C:\WINDOWS\Desktop\1.txt')

vMemoryStream := TMemoryStream.Create

try

StringToStream(Memo2.Text, vMemoryStream)

vMemoryStream.Position := 0

Memo1.Lines.LoadFromStream(vMemoryStream)

finally

vMemoryStream.Free

end

end

///////End Demo


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12164895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存