问题描述
我想编写一种方法,该方法应修剪std :: string正在进行的和结尾的空格。例如,如果该方法获取“ HELLO WORLD”,则应返回“ HELLO WORLD”。请注意,返回字符串之间必须有一个空格,这很重要。
这是我方法的签名:
std::string MyHandler::Trim(const std::string& toTrim)
我的方法是将“ toTrim”参数复制到非常量副本中。
std::string toTrimCopy = toTrim;
现在,我想获得一个非常量的迭代器,并在for循环中擦除从头到尾的所有空格,而迭代器的值是一个空白。
for (std::string::iterator it = toTrim.begin(); *it == ' '; it++)
{
toTrimCopy.erase(it);
}
for (std::string::iterator it = toTrim.end();
*it == ' ';
it--)
{
toTrimCopy.erase(it);
}
这会导致编译器错误:
StringHandling.C:60:49: error: conversion from ‘std::basic_string<char>::const_iterator {aka __gnu_cxx::__normal_iterator<const char*,std::basic_string<char> >}’ to non-scalar type ‘std::basic_string<char>::iterator {aka __gnu_cxx::__normal_iterator<char*,std::basic_string<char> >}’ requested
我来自Java,现在学习C ++已有3周了。所以不要判断我。我怀疑=
分配将常量char指针分配给了我的新字符串,因此我的副本隐含了一个常量值。但是我不完全知道。
顺便说一句,这种方法也会引发异常:
std::string toTrimCopy = "";
std::strcpy(toTrimCopy,toTrim);
他说,他不能将字符串转换为char指针。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)