1

我正在尝试从 pascal 中的同一行读取两个字符串变量。
这两个字符串由空格分隔。

我试过像一个字符串一样读取它,然后将它分成两部分,但是我遇到了一个问题,因为字符串大于 255 个字符。

这是我要阅读的字符串:

kyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLuPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzef mkhRyGOwpLobZvGynmdpiujxhUwphFsTTipuyAwpeffcckLumWbnbfdhlzFmnkkrwNsewPouxmpQwGeMxqDoIqeWVkpdLueirlLiabfhxjnwbyMDYUfhGmlnFJdmfhtxljPqicbotSBvkKaQdsmbyrhmmSdexHjwdnecjRtzeajfz`

该行并不总是相同的长度,并且空白空间不在同一位置。

我试图弄清楚是否通过从第二个字符串中删除一些字符可以得到第一个。

示例:STRING aSgasTsaRoIgfNfdsG
应该得到肯定的答案。

这是检查它的代码。

q:=1;  
for m:=1 to length(b) do  
begin  
if b[m] = a[q] then  
q:=q+1;
end;

q:=q-1;

writeln(q);

if q = length(a) then  
writeln('YES')  
else  
writeln('NO');

其中 a 是第一个字符串,b 是第二个字符串。

我将第一个大字符串作为一个变量读取,然后将其分成两部分。
当第一个字符串大于 255 个字符时会出现此问题。这就是为什么我想知道如何从同一行读取两个字符串。

我用来分隔字符串的代码:

readln(x);  

x:=LONGSTRINGHERE;  
blank:=' ';
Location := Pos(blank, x);  

a:=Copy(x, 1, (Location-1));  

b:=Copy(x, (Location+1), length(x)); 
4

2 回答 2

1

而不是使用readln()读取整行,也许您可​​以使用read()类型变量char一次将一个字符读取到您的第一个字符串中,直到您检测到一个空格然后读取第二个字符串。

于 2012-04-05T23:53:41.207 回答
0

您可以使用 freepascal 编译器并用 ansistring 替换字符串,最长可达 2^16 = 65536 个字符。

于 2012-04-10T02:37:09.690 回答