接收一串“字符”并尝试使用指针计算它们中有多少是相同类型

时间:2013-02-06 03:29:00

标签: c++ arrays pointers const

我有这个函数接收一串“字符”。我正在尝试通过该字符串并使用指针来查看第二个元素是否与第一个元素相同。可以说我有aaabbccddd,我想要写成一个数组,我有3a,2 bs,2cs和3ds。我真的在努力弄清楚第二个字符串是否与使用指针的第一个字符串相同。我创建了这个临时指针,我做了temp ++。这基本上只是在第二个学期之后显示所有内容,等等...我怎样才能单独看第二个词并将它与第一个词只用指针进行比较。

void RLE<T>::Compress(const T* input, int inSize)
{

   delete m_Data;
    m_Size = 0;

    T * m_Data;
    m_Data = new T[inSize*2];


    int runSize = MaxRunSize();

    const T * temp;
    temp = input;

    temp++;

这部分总是给我错误,它说我有一个错误的指针。我明白这基本上不起作用,因为我的输入指针比我创建的临时指针长。我的数组永远不会被初始化

    if  (temp == input)
    {
        std::cout<<"here"<<std::endl;
        int number = 1;
        number++;
        m_Data[0] = number;
        m_Size++;
        std::cout<<temp;
        m_Data[m_Size] = *temp;


    }
}

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

你的错误一开始是否正确?

delete m_Data;
m_Size = 0;

T * m_Data;

这不起作用,因为m_Data在那时是未定义的,除非通过命名,也是一个成员,在这种情况下你不应该重新定义它。

不应该这样做

if(temp[i] == temp[i+1]) //or something like that

而不是

if  (temp == input)