This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[c++ stl] std::string bug?


Hi,

It seems that one constructor of the std::string class or the data() method
doesn't work properly.

string::data() and string::c_str() are supposed to be equivalent but don't
always behave the same.

have a look at the following  code and its test.

....?

Thanks,
Gwenaël

PS: I update cygwin this morning => 1.3.9
__________________________________
#include <iostream>
#include <string>
using namespace std;

void foo(const std::string& _str){
      cout<<"foo: cout<<_str            => "<< _str   <<endl;
      cout<<"foo: cout<<_str.data() => "<< _str.data()  <<endl;
      cout<<"foo: cout<<_str.c_str()=> "<< _str.c_str() <<endl;
      cout<<"foo: _str.length()         => "<< _str.length()<<endl<<endl;
}

void main(int argc, char **argv)
{
  std::string str;
  if (argc > 1) str = argv[1];
  else str = "OOOOOOO";

  cout<<"----------foo(str);"<<endl;
  foo(str);

  cout<<"----------foo(\"say hello!\");"<<endl;
  foo("say hello!");

  cout<<"----------foo(\"...\");"<<endl;
  foo("...");

  cout<<"----------foo(str);"<<endl;
  foo(str);
}
_________________________________

> g++ code.cpp -o code.exe
> code.exe
----------foo(str);
foo: cout<<_str            => OOOOOOO
foo: cout<<_str.data()  => OOOOOOO
foo: cout<<_str.c_str() => OOOOOOO
foo: _str.length()           => 7

----------foo("say hello!");
foo: cout<<_str           => say hello!
foo: cout<<_str.data() => say hello!
foo: cout<<_str.c_str()=> say hello!
foo: _str.length()         => 10

----------foo("...");
foo: cout<<_str           => ...
foo: cout<<_str.data() => ... hello!                    <<<<<=========
???????????!!!!!!!
foo: cout<<_str.c_str()=> ...
foo: _str.length()         => 3

----------foo(str);
foo: cout<<_str           => OOOOOOO
foo: cout<<_str.data() => OOOOOOO
foo: cout<<_str.c_str()=> OOOOOOO
foo: _str.length()          => 7
>
__________________________________

>From my cygcheck.out:
    Cygwin DLL version info:
        DLL version: 1.3.9
        DLL epoch: 19
        DLL bad signal mask: 19005
        DLL old termios: 5
        DLL malloc env: 28
        API major: 0
        API minor: 51
        Shared data: 3
        DLL identifier: cygwin1
        Mount registry: 2
        Cygnus registry name: Cygnus Solutions
        Cygwin registry name: Cygwin
        Program options name: Program Options
        Cygwin mount registry name: mounts v2
        Cygdrive flags: cygdrive flags
        Cygdrive prefix: cygdrive prefix
        Cygdrive default prefix:
        Build date: Mon Jan 21 12:48:41 EST 2002
        Shared id: cygwin1S3


Cygwin Package Information
Last downloaded files to: E:\downloads\Cygwin
Last downloaded files from:
ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus

Package             Version
ash                 20020131-1
autoconf            2.52a-1
autoconf-devel      2.52-4
autoconf-stable     2.13-4
automake            1.5b-1
automake-devel      1.5-5
automake-stable     1.4p5-5
bash                2.05a-3
binutils            20011002-1
curl                7.9.3-1
cygutils            0.9.9-1
cygwin              1.3.9-1
diff                0.0
fileutils           4.1-1
findutils           4.1
gawk                3.0.4-1
gcc                 2.95.3-5
gdbm                1.8.0-3
grep                2.5g
groff               1.17.2-1
gzip                1.3.2-1
jbigkit             1.2-6
jpeg                6b-7
less                358-3
libintl             0.10.38-3
libintl1            0.10.40-1
libncurses5         5.2-1
libncurses6         5.2-8
libpng              1.0.12-1
libpng2             1.0.12-1
libreadline4        4.1-2
libreadline5        4.2a-1
libxml2             2.4.13-1
libxslt             1.0.10-1
login               1.4-3
m4                  0.0
make                3.79.1-5
man                 1.5g-2
mingw-runtime       1.2-1
mktemp              1.4-1
ncurses             5.2-8
newlib-man          20001118-1
opengl              1.1.0-5
openssl             0.9.6c-3
pcre                3.7-1
perl                5.6.1-2
popt                1.6.2-1
readline            4.2a-1
sed                 3.02-1
sh-utils            2.0-2
tar                 1.13.19-1
termcap             20010825-1
terminfo            5.2-1
textutils           2.0.21-1
tiff                3.5.7-1
vim                 6.0.93-1
w32api              1.2-1
wget                1.8.1-1
which               1.5-1
xpm-nox             4.2.0-1
zlib                1.1.3-7




--
______________________________________
Gwenael . Durand@laposte . net
http://perso.wanadoo.fr/gwenael.durand
______________________________________



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]