2017-06-12 74 views
2

我有交流#程序,并试图调用一个特定的字符串(正常字符串,没有什么特别的)messageBox,并且当到达一个变量与字符串连接时,它显然停止级联。 代码:MessageBox不显示所有给定的字符串

string first = userInfo.info.getFirst(); //Some function 
string last = userInfo.info.getLast(); // Some function 
string message = first + "_" + last + " !"; 
MessageBox.Show(message); 
// Output will be "(first value)"; 

我曾尝试调试和的“第一”和“最后”的值是否正确和罚款。 我也分析过是否有任何CPU或内存峰值出现(使用VS的工具),但没有看到。

对于这个问题有什么想法吗? 非常感谢!

+3

“first”或“last”在任何位置都包含“\ 0”(“null”字符)吗?你能提供[mcve]吗? –

+0

就是这样,谢谢!我明白问题来自何处。 –

+0

在这种情况下,我会添加一个答案。 –

回答

4

如果Win32 GUI库在其中找到\0字符(U + 0000,Unicode“null”),则它们终止字符串。例如,如果您有:

MessageBox.Show("First part\0Second part"); 

那么只有First part将显示。

至少有两个选项:

  • 在哪里工作“坏”字的来源。它通常是滥用StreamTextReader API,不注意由Read调用返回多少个字节或字符
  • 只需删除“坏”字符(例如, message = message.Replace("\0", "");

第一个选项是优选的 - 我只能求助于第二,如果我真的无法获得干净的数据。

相关问题