C++ Visual Studio C++;从字符串中删除最后一个字符
我的计算器程序需要一些帮助。我已经为主要按钮创建了代码,如数字0-9和算术运算符,使其能够执行简单的计算 我现在遇到的问题是使CE按钮正常工作,单击CE按钮后,我需要从显示标签中删除最后输入的字符 我试图以某种方式修改此代码,但它不起作用: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,
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()
).@crashmstrlblResult
是显示计算的标签result@user3124052…标签?我想我知道了,但这是什么课?这可能是最重要的部分。@crashmstr它在由VSpublic 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);