问题
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 argument1toint remove(const char*)
回答1:
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.
回答2:
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::.
回答3:
Use std::remove not remove
回答4:
remove is algorithm, hence you need to do #include <algorithm>. Then while using you should use it as std::remove(...).
回答5:
remove requires the algorithm header and is from std namespace
I do find the C++ Reference very helpful for quickly getting usage examples and what headers are required. It may not have complete information for some things but it helps as a good start if I am not sure about how to use some parts of C Library, stream Library, strings library, STL Containers or STL Algorithms
来源:https://stackoverflow.com/questions/5674374/remove-double-quotes-from-a-string-in-c