C++ 将先前指定的指针值传递给循环
我有一个字符串指针C++ 将先前指定的指针值传递给循环,c++,pointers,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; ConvertToP
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
}
}
string*ifxPtr;
void Expression::GetInfix(字符串数据)//此方法首先运行,并将指针设置为指向以前传递的用户输入
{
ifxPtr=&data;
ConvertToPostfix();
}
void表达式::ConvertToPostfix()
{
对于(inti=0;i<*ifxPtr->length;i++)//这是一个难题,编译器正在抱怨*ifxPtr和消息不能应用二进制'foo->
是(*foo)的简写。
。不要将运算符加倍,它也应该是length()
:
for(int i=0;ilength();i++)
此外,在设计时要小心,因为一个简单的错误而导致未定义行为的可能性很大
length
是一个函数,它应该是length()
你
如果使用->
结果
从length()
返回的是size\t
以下是我将使用的:
int length = static_cast<int>((*ifxPtr).length());
int length=static_cast((*ifxPtr.length());
如果在表示使用指针指向的值之前使用and*
字符串s,*p;
p=&s
这里的*p.lenght()与s.length()相同,如果您想通过指针访问,则必须像下面的p->length()一样使用它.它仍在抱怨同一条消息。@Nottynija我假设您使用的是std::string
?您确定它包含在其中,并且您确定它不仅仅是关于比较无符号整型和有符号整型的警告吗?是的,我使用的是std::string,不是警告。这是一个错误,因此无法编译-无法应用我编辑的二进制文件我的答案是,这是一个函数而不是一个成员,贾斯汀的答案更好。我甚至没有发现1
,很好。
int length = static_cast<int>((*ifxPtr).length());