简单的子串程序将无法正常工作

时间:2014-04-24 08:12:18

标签: string visual-c++ substring

我的任务是在tbUnoslabel1中输入一些文字,打印出字符串的前两个字母。我刚刚开始学习Visual C ++,我正在努力解决问题。

  

private:System :: Void textBox1_TextChanged(System :: Object ^ sender,System :: EventArgs ^ e){

      String^ sUnos = tbUnos->Text;
      label1->Text = sUnos->String::Substring(1,2);
     

}

构建和运行时,我的程序崩溃了。 请帮助:)

1 个答案:

答案 0 :(得分:0)

首先,这不是C ++,这是C ++ / CLI,它是一种针对CLI的语言扩展。

其次,当你这样做时,我不明白你的程序如何编译sUnos->String::Substring。但是,您的代码应如下所示:

String^ sUnos = tbUnos->Text;
if(!String::IsNullOrEmpty(sUnos))
   label1->Text = sUnos->Substring(1,2);

编辑:请注意,此代码位于TextChanged事件的处理程序中。这意味着每次文本更改时都会调用它,就像每次按键盘上的键一样。当您在文本框中键入第一个字母时,tbUnos->Text将包含单个字符,并且Substring(1, 2)将抛出,因为没有索引1可以开始。来自MSDN

  

ArgumentOutOfRangeException

     

startIndexlength表示不在此实例中的位置。