[c++ stl] std::string bug?
Gwenaël Durand
Gwenael.dot.Durand@laposte.dot.net
Wed Feb 27 05:31:00 GMT 2002
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/
More information about the Cygwin
mailing list