remove double quotes from a string in c++
I am stripping off double quotes from a string, but I keep getting this error from the following function. What is the problem here?
开发者_Python百科void readCSVCell(stringstream& lineStream, string& s) {
std::getline(lineStream,s,',');
s.erase(remove( s.begin(), s.end(), '\"' ), s.end());
}
[ERROR]
c.cpp: In function
c.cpp:11: error: cannot convertvoid readCSVCell(std::stringstream&, std::string&)
:__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::
.
Use std::remove
not remove
You can use below code to remove double quotes from string in C++.
stringVariable.erase(
std::remove(stringVariable.begin(), stringVariable.end(), '\"'),
stringVariable.end());
remove
is algorithm, hence you need to do #include <algorithm>
. Then while using you should use it as std::remove(...)
.
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
精彩评论