我正在尝试编写一个函数,该函数接受用户提交的字符串并创建两个指针;一个指向字符串的第一个索引,一个指向字符串的最后一个索引。当我尝试将指针设置为等于特定索引firstPointer = userString[0];
secondPointer = userString[userString.length() - 1];
时,我收到错误。我收到的错误出现在=
运算符上,并说" char类型的值不能分配给char"类型的实体。
我已经阅读了有关stackoverflow的其他几篇文章,我不认为他们正在解决相同的问题,或者说它似乎是合理的我不明白他们的问题是什么。重新推荐。我对C ++很新,对指针很新。当我意识到我的指针赋值错误时,你可以忽略for循环我只是设置了它。请在下面找到功能代码:
功能
void ReverseString(string &userString)
{
char *firstPointer;
char *secondPointer;
firstPointer = new char;
secondPointer = new char;
firstPointer = userString[0];
secondPointer = userString[userString.length() - 1];
//Iterate over entire string
for (int loopCounter = 0; loopCounter < userString.length()/2; loopCounter++)
{
}
}
答案 0 :(得分:1)
我收到的错误出现在
类型的实体=
运营商上,并说明了 &#34; char类型的值不能分配给char&#34;。
我不相信你。我准备下注实际上说的一笔很重要的金额:
&#34; char类型的值无法分配给char * &#34;
这种追踪*非常重要。 firstPointer
不是char
,它是指向char
&#34;的指针,或者我们倾向于在这里说&#34; a char*
&#34;
userString[0]
一个char
(或更确切地说,是对char
的引用)。它是对索引0处字符串中字符的引用。如果需要指向该char
的指针,则需要获取其地址。所以&userString[0]
。所以你的代码可能是:
firstPointer = &userString[0];
secondPointer = &userString[userString.length() - 1];
或者,获取第一个和最后一个元素是如此常见,以至于有特定的功能,所以你可以写:
firstPointer = &userString.front();
secondPointer = &userString.back();
最后,所有这取决于实际上 是第一个和最后一个字符 - 所以你应该真正开始:
if (userString.empty()) return;
确保有。
答案 1 :(得分:-1)
试试这个:
void ReverseString(string &userString)
{
char *firstPointer;
char *secondPointer;
firstPointer = &userString[0];
secondPointer = &userString[userString.length() - 1];
.....
}
您的问题是您的userString不是指针。指针就像实际对象的地址。所以这样做:firstPointer = userString[0];
就像在他们要求你的地址时给别人一样。但您可以使用&
运算符获取“地址”,例如firstPointer = &userString[0];
。
在这种情况下,您也不需要使用new
。如果你希望你的指针指向那个不存在的东西,你会写firstPointer = new char;
之类的东西,有效地创建一个新的char
并指向它。但是,由于userString
已经存在,因此无需创建新的node(const node& other) {
node* prev = nullptr;
node* cur = this;
const node* old_cur = &other;
for (;;) {
cur->count = old_cur->count;
cur->min = old_cur->min;
cur->max = old_cur->max;
cur->prev = prev;
if (old_cur->next) {
old_cur = old_cur->next;
cur->next = new node();
prev = cur;
cur = cur->next;
} else {
cur->next = nullptr;
break;
}
}
}
。