gpt4 book ai didi

c# - 将此行从 C++ 转换为 C#

转载 作者:行者123 更新时间:2023-11-30 01:27:46 25 4
gpt4 key购买 nike

我有一个 C++ 方法:-

const char *match(const char *str)
{
if( *str == '\0' || *str == ')' )
{
return str;
}
if( *str == '(' )
{
// This is equivalent to str.SubString(1) in C#.
const char *closer = match(++str);
if( *closer == ')' )
{
// Same here too closer.Substring(1).
return match(++closer);
}

// Wasn't sure about this.
return str - 1;
}

return match(++str);
}

str - 1 在 C++ 中是什么意思?我是 C++ 的新手,主要使用 C# 编写代码。

谢谢。

我已经更新了方法 - 基本上它是试图找出括号是否匹配,即

I/P: "()"- 有效I/P:“())”- 无效。我已经根据我的理解添加了内联注释,“str - 1”行有问题,这在 C# 中似乎没有等效项。

最佳答案

这是指针运算。 str - 1 从 char 指针中减去 1,使其指向内存中从前一个字符开始的字符串。这与砍掉第一个字符相反——它会把它放回去!

在 C# 中,您不能那样做。但是,要使它完全有效,应该有一个之前用 str + 1 截断的字符。您必须在代码中找到之前的操作并保存原始字符串,以便您可以反转它。

或者,str - 1 可能只是为了抵消后面出现的 str + 1,这样它就不会截断第一个字符。如果同时未使用指针,则将是安全的逻辑将在大多数平台上运行(尽管是未定义的行为)。

关于c# - 将此行从 C++ 转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com