将先前分配的指针值传递给循环

时间:2016-05-01 17:57:46

标签: c++ pointers

我有一个字符串指针string* ifxPtr;,我试图做的是将此指针设置为指向用户输入,然后循环遍历它的每个字符。

string* ifxPtr;

void Expression::GetInfix(string data) // This method runs first and it's setting the pointer to point to previously passed user input
{   
   ifxPtr = &data;
   ConvertToPostfix();
}

void Expression::ConvertToPostfix()
{
    for (int i = 0; i < *ifxPtr->length; i++) // Here's the struggle, compiler is complaining about *ifxPtr with message Cannot apply binary '<' to 'int' and 'unassigned() const'
    {
        //Do something here
    }
}

3 个答案:

答案 0 :(得分:3)

  1. length是一个函数,它应该是length()
  2. 您 如果使用->
  3. ,则不需要遵循指针
  4. 结果 从length()返回的是size_t
  5. 以下是我要使用的内容:

    int length = static_cast<int>((*ifxPtr).length());
    

答案 1 :(得分:1)

foo->(*foo).的简写。不要将运算符加倍,也应该是length()

for (int i = 0; i < ifxPtr->length(); i++)

另外,要小心这个设计,因为一个简单的错误而遇到未定义行为的可能性很大。

答案 2 :(得分:0)

如果你使用*之前它意味着使用指针指向的值。

string s,* p; P =&安培; S;

这里* p.lenght()与s.length相同如果你想通过指针访问你必须使用它像p-&gt;长度()。