【发布时间】:2011-04-21 17:11:04
【问题描述】:
我正在做一个任务,需要自己反转一个字符序列,可以是任何给定类型,使用指向序列“前端”的指针和指向序列“结束”的指针.
在我当前的构建中,我首先尝试切换“front”和“end”字符。但是,我在运行时收到“访问冲突”。
我现在的代码:
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
class StrReverse
{
public:
StrReverse(); //default constructor
void revStr(); //reverses a given c-string
private:
typedef char* CharPtr;
CharPtr front;
CharPtr end;
CharPtr cStr;
};
int main()
{
StrReverse temp = StrReverse();
temp.revStr();
system("pause");
return 0;
}
//default constructor
StrReverse::StrReverse()
{
cStr = "aDb3EfgZ";
front = new char;
end = new char;
}
//reverses a given string
void StrReverse::revStr()
{
for(int i = 0;i < 4;i++)
{
front = (cStr + i);
end = (cStr + (7 - i));
*front = *end;
}
}
这个问题的关键限制是反转必须使用指针来完成。我意识到简单地反转字符串是微不足道的,但这个限制让我摸不着头脑。任何有建设性的 cmets 将不胜感激!
【问题讨论】:
-
你为什么要用这个来上课?反转字符串是一个简单的动作,它应该是一个函数。
-
初学者的错误,我的 C++ 经验一直被 OOP 支配。不过,我现在只是将其缩短为一个功能,谢谢您的帮助!
标签: c++ arrays string pointers