[libcxx-dev] problem with seekg() on a wfstream
Giorgio Dal Molin via libcxx-dev
libcxx-dev at lists.llvm.org
Thu May 30 08:23:10 PDT 2019
Hallo,
I'm having surprising problems trying to seek back
a wfstream after reading its contents.
I'm working on linux with the current llvm 'release_80'.
Here is the test.cpp and the input file:
#include <iostream>
#include <fstream>
int main( int argc, const char *argv[] )
{
std::wfstream ws;
std::wstring line;
if( argc > 1 )
ws.open( argv[1] );
if( !ws.is_open() ) {
std::wcout << L"errors opening the stream.\n";
return -1;
}
std::wcout << L"read the file:\n";
while( std::getline( ws, line ) )
std::wcout << L"line: " << line << std::endl;
std::wcout << L"done reading the file.\n";
ws.clear();
ws.seekg( 0 );
std::wcout << L"read the file again:\n";
while( std::getline( ws, line ) )
std::wcout << L"line: " << line << std::endl;
std::wcout << L"done reading the file again.\n";
return 0;
};
The input file:
abc
1 2 3
Compiling the program with:
# make test CXX=clang++ CXXFLAGS="-O2 -march=native -stdlib=libc++
-std=c++17" LDFLAGS="-fuse-ld=lld"
And here are the results:
# ./test test.txt
read the file:
line: abc
line: 1 2 3
done reading the file.
read the file again:
done reading the file again.
The second time I want to read the file it does not work because the
wfstream is in 'fail' state after the call to seekg( 0 ).
The same source linked against the libstdc++ works as expected:
# make test CXX=clang++ CXXFLAGS="-O2 -march=native -stdlib=libstdc++
-std=c++17" LDFLAGS="-fuse-ld=lld"
# ./test test.txt
read the file:
line: abc
line: 1 2 3
done reading the file.
read the file again:
line: abc
line: 1 2 3
done reading the file again.
giorgio
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 899 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/libcxx-dev/attachments/20190530/e436133d/attachment.sig>
More information about the libcxx-dev
mailing list