我希望能够使用很长的字符串(不超过100000个符号)。 据我所知,典型的字符串变量最多只能包含256个字符。 有没有办法存储这么长的字符串?
答案 0 :(得分:5)
旧式(Turbo Pascal或Delphi 1)字符串,现在称为ShortString
,限制为255个字符(字节0保留为字符串长度)。这似乎仍然是FreePascal的默认值(根据@ MarcovandeVoort的评论如下)。不过请继续阅读,直到您进入下面AnsiString
的讨论和代码示例。 : - )
目前,Pascal的大多数其他方言我都知道默认为AnsiString
(长字符串的单字节字符)或UnicodeString
(长字符串的多字节字符)。这些都不限于255个字符。
当前版本的Delphi默认为UnicodeString
作为默认类型,因此声明string
变量实际上是一个长UnicodeString
。字符串长度没有实际的上限:
var
Test: string; // Declare a new Unicode string
begin
SetLength(Test, 100000); // Initialize it to hold 100000 characters
Test := StringOfChar('X', 100000); // Fill it with 100000 'X' characters
end;
如果要强制使用单字节字符(但不限于255个字符串),请使用AnsiString
(如果使用string
,可以将其设置为FreePascal中的默认{$H+}
类型1}}编译器指令 - 谢谢@MarcovandeVoort):
var
Test: AnsiString; // Declare a new Ansistring
begin
SetLength(Test, 100000); // Initialize it to hold 100000 characters
Test := StringOfChar('X', 100000); // Fill it with 100000 'X' characters
end;
最后,如果 因某种未知原因想要使用限制为255个字符的旧样式ShortString
,请使用ShortString
或者String[Size]
或旧样式var
Test: ShortString; // Declare a new short string of 255 characters
ShortTest: String[100]; // Also a ShortString of 100 characters
begin
// This line won't compile, because it's too large for Test
Test := StringOfChar('X', 100000); // Fill it with 100000 'X' characters
end;
声明:
{{1}}
答案 1 :(得分:4)
当您使用Free Pascal时,您无需担心这一点。您只需要将指令{$ H +}插入到源的开头。
{$H+}
var s: String;
begin
s := StringOfChar('X', 1000);
writeln(s);
end.
当然,您可能希望使用{$mode objfpc}
和{$coperators}
。 http://www.freepascal.org/docs-html/prog/progch1.html
答案 2 :(得分:3)
您可以使用AnsiString
type。