C++ Visual Studio C++;从字符串中删除最后一个字符

C++ Visual Studio C++;从字符串中删除最后一个字符,c++,visual-studio-2010,visual-studio,c++-cli,calculator,C++,Visual Studio 2010,Visual Studio,C++ Cli,Calculator,我的计算器程序需要一些帮助。我已经为主要按钮创建了代码,如数字0-9和算术运算符,使其能够执行简单的计算 我现在遇到的问题是使CE按钮正常工作,单击CE按钮后,我需要从显示标签中删除最后输入的字符 我试图以某种方式修改此代码,但它不起作用: lblResult->substr(0, lblResult->size()-1); 我知道我做错了什么,你能帮帮我吗 提前谢谢只是问一下显而易见的问题——整个声明都是 *lblResult = lblResult->substr(0,

我的计算器程序需要一些帮助。我已经为主要按钮创建了代码,如数字0-9和算术运算符,使其能够执行简单的计算

我现在遇到的问题是使CE按钮正常工作,单击CE按钮后,我需要从显示标签中删除最后输入的字符

我试图以某种方式修改此代码,但它不起作用:

lblResult->substr(0, lblResult->size()-1);
我知道我做错了什么,你能帮帮我吗

提前谢谢

只是问一下显而易见的问题——整个声明都是

*lblResult = lblResult->substr(0, lblResult->size()-1);

是吗?

…既然我们知道lblResult是一个,我们可以看看文档

标签
有一个,它是
字符串^
(即字符串引用)

对于你想做的事情,选择合适的方法。但请注意,在文档中,它表示“返回一个新字符串,其中删除了当前字符串中指定数量的字符。”这意味着它不修改该字符串,而是返回一个修改后的副本

因此,要更改标签的文本,我们需要为其
text
属性指定所需内容:包含除最后一个字符以外的所有字符的当前字符串:

lblResult->Text = lblResult->Text->Remove(lblResult->Text->Length - 1);

在这种情况下,可以使用“零部件删除”和“长度”方法

使用以下代码访问组件文本:

组件->文本

然后通过访问remove和component Length方法删除字符串的最后一个字符

=组件->文本->删除(组件->文本->长度-1)


我希望您觉得这很有用。

您是否意识到
substr()
返回一个新的
字符串
,而不是修改调用它的对象?如果您正在这样做,并且希望
lblResult
发生更改,只需在前面放一个
lblResult=
(或者更有效地使用
lblResult->erase(lblResult->size()-1);
,或者在C++11中使用
lblResult->pop_back()
).@crashmstr
lblResult
是显示计算的标签result@user3124052…标签?我想我知道了,但这是什么课?这可能是最重要的部分。@crashmstr它在由VS
public ref类form1:public System::Windows::Forms::Form
@user3124052:生成的form1类中,这解释了很多。一个<代码>系统::Windows::窗体::标签< /C> >不是C++标准<代码> STD::String ,这是大家在这里假设的意思(毕竟“从字符串中删除最后一个字符”),并且实际上您可能是指这一点。遗憾的是,您在.NET世界中使用的是非标准数据类型。您将需要大致类似于
lblResult->Text=lblResult->Text.Remove(lblResult->Text.Length)的内容。检查。为什么这是一个回答而不是评论?@cyber这是一个重复的问题;我相信复调问题(他认为substr()改变了字符串)的答案就是OP问题的答案。比substr好得多。谢谢,很抱歉没有具体说明标签类型。
lblResult->Text = lblResult->Text->Remove(lblResult->Text->Length - 1);