I am stripping off double quotes from a string, but I keep getting this error from the following function. What is the problem here?
void readCSVCell(stringstream& lineStream, string& s) {
std::getline(lineStream,s,',');
s.erase(remove( s.begin(), s.end(), '\"' ), s.end());
}
[ERROR]
c.cpp: In function
void readCSVCell(std::stringstream&, std::string&)
:
c.cpp:11: error: cannot convert__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >
toconst char*
for argument1
toint remove(const char*)
Don't you want something like:
s.erase(remove( s.begin(), s.end(), '\"' ),s.end());
As remove
returns "A forward iterator pointing to the new end of the sequence, which now includes all the elements with a value other than value" rather than removing the values.
It compiles fine for me though (with gcc 4.4), so perhaps you just need to include <algorithm>
and make sure you are either using namespace std
or qualify the name.
Do you have stdio.h
included? Then there could be a conflict with remove
. This is the reason why you always should prefix std
-calls with, well, std::
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With