Rif. mod. 96/4. Variazione a TParagraph_string::tokenize().
La variazione riguarda il contemporaneo scanning di eventuali '\n', sostituendoli con '|', pur mantenendo il precedente algoritmo di separazione (separa all'ultimo spazio prima della larghezza o altrimenti tronca alla larghezza massima). git-svn-id: svn://10.65.10.50/trunk@2386 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0b75887d1c
commit
2d3cfcb803
@ -1330,24 +1330,27 @@ const TString& TParagraph_string::operator =(const char* s)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TParagraph_string::tokenize()
|
void TParagraph_string::tokenize()
|
||||||
{
|
{
|
||||||
int start = 0;
|
int last_space = 0;
|
||||||
for (int end = start+_width; end < len(); end = start+_width)
|
int chars_in_row = 0;
|
||||||
|
TString stmp;
|
||||||
|
for (int start = 0; start < len(); start++)
|
||||||
{
|
{
|
||||||
for (int i = end; i >= start; i--)
|
switch (_str[start])
|
||||||
if (is_space(_str[i])) break;
|
|
||||||
|
|
||||||
if (i < start)
|
|
||||||
{
|
{
|
||||||
insert("|", end);
|
case '\n': _str[start]='|'; last_space = 0;chars_in_row=0; break;
|
||||||
start = end+1;
|
case ' ' : last_space = start; chars_in_row++; break;
|
||||||
|
default : chars_in_row++; break;
|
||||||
}
|
}
|
||||||
else
|
stmp<<_str[start];
|
||||||
|
if (chars_in_row == _width)
|
||||||
{
|
{
|
||||||
_str[i] = '|';
|
if (last_space!=0) stmp[last_space] = '|';
|
||||||
start = i+1;
|
else stmp<<"|";
|
||||||
|
last_space = 0; chars_in_row = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
TToken_string::operator=(stmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user