From 337c8d45bc51f8f0b13c31a2235f25fde9ec1c92 Mon Sep 17 00:00:00 2001 From: angelo Date: Fri, 22 Nov 1996 17:24:10 +0000 Subject: [PATCH] E' stata cmabiata per l'ennesima volta la TParagraph_string::tokenize(). Spero sia la volta buona git-svn-id: svn://10.65.10.50/trunk@3921 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- include/strings.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/include/strings.cpp b/include/strings.cpp index 0bd30e843..c4d7c0b8b 100755 --- a/include/strings.cpp +++ b/include/strings.cpp @@ -1418,25 +1418,32 @@ const TString& TParagraph_string::operator =(const char* s) void TParagraph_string::tokenize() { - int last_space = 0; - int chars_in_row = 0; + int last_space = 0, last_start = 0; + int num_chars = 0; const int l = len(); - TString stmp; - for (int start = 0; start < l; start++) + TString stmp,sstr(_str),swork; // stringhe di lavoro + for (int start = 0; start < l;) { + switch (_str[start]) { - case '\n': _str[start]='|'; last_space = 0;chars_in_row=0; break; - case ' ' : last_space = start; chars_in_row++; break; - default : chars_in_row++; break; + case '\n': last_space = start; num_chars = _width; break; + case ' ' : last_space = start; num_chars++; break; + default : num_chars++; break; } - stmp<<_str[start]; - if (chars_in_row == _width && chars_in_row != l) + + if (num_chars == _width) { - if (last_space!=0) stmp[last_space] = '|'; - else stmp<<"|"; - last_space = 0; chars_in_row = 0; + int num_of_chars_in_row = (last_space+1) - last_start; + if (num_of_chars_in_row <= 0) num_of_chars_in_row = _width; // Se non ci sono spazi tronca la stringa a 25 + swork=sstr.mid(last_start,num_of_chars_in_row); + stmp << swork.trim(); + stmp << "|"; + last_space = num_chars = 0; + start = start - (_width - num_of_chars_in_row); // riporta indietro (toglie il numero di caratteri effettivi della riga) + last_start = start; } + start++; } TToken_string::operator=(stmp); }