Hi Tommaso,
There are better and simple procedures to encode an integer in a string.
A conservative and general procedure is the following: Instead of the lines:
std::ostringstream buffer;
buffer << index;
string s = buffer.str();
char *c = new char[s.length()+1];
strcpy(c, s.c_str());
tex = new TLatex(tr.x(),tr.y(),c);
do:
char c[4];
sprintf(c,"%d",index);
tex = new TLatex(tr.x(),tr.y(),c);
Rene Brun
Tommaso Chiarusi wrote:
>
> Dear Root Users my problem is the following:
> I have N points that I want to plot (let's say I know their X and Y).
> I have also an integer index "index" that is associated to each point I
> plot,
> and which increases of one unit its value after the point has been plot.
> Let's say:
>
> index = 0;
>
> for (int j=0;J<N;j++)
> {
> Plot(Point);
> index++;
> }
>
> My whish woulkd be plotting the value of i by the point in the scatter
> plot, as in the following naive picture:
>
> Y
> ^ 2
> | * 3
> | *
> | 1
> | *
> -------->X
>
> One usually uses the TLatex class for drawning text onto graphics.
> The problem is that the object
>
> tex = new TLatex(X,Y,c)
>
> wants c to be of type char*
>
> So I use the following procedure:
> I included the two libs:
> #include <sstream>
> #include <string>
>
> then
>
> std::ostringstream buffer;
> buffer << index;
> string s = buffer.str();
> char *c = new char[s.length()+1];
> strcpy(c, s.c_str());
> tex = new TLatex(tr.x(),tr.y(),c);
> tex->SetTextSize(0.02);
> tex->SetTextColor(1);
> tex->SetLineWidth(.5);
> tex->Draw();
> index++;
>
> I finally got printed the numbers, but together with special characters
> (trash!!!) as for example:
>
> Y
> ^ 2 @h'@
> | * 3 @yyyyyy@@@
> | *
> | 1 @@yPPPy@@@@
> | *
> -------->X
>
> Well I don't know how to get rid of such dirty characters, which
> originate, I presume, from the passage when buffering or when
> string-copying.
>
> Thank you very much for your attention, and for a halp.
>
> Tommaso
>
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:51 MET