我使用String :: Remove方法删除String的前三个字符。但是,我从该方法收到了意想不到的结果。
我的函数第一次运行时返回删除前两个字符的字符串。下次运行我的函数时,它将返回仅删除了第一个字符的字符串。
字符串中是否有隐藏的字符?如果是这样,我如何看待/删除它们?
String^ SendCommand(const String^ command)
{
lock l(thisLock);
serialPort->WriteLine((String^) command);
String^ response = serialPort->ReadLine();
if (response[1] == CMD_ERROR_CHAR)
{
// Unknown command was sent
}
response = response->Remove(0, 3);
return response;
}
根据调试器:
RUN1:
(预删除)response =“:A 0 TENTHS”
(删除后)响应=“0 TENTHS”(0前没有空格)
RUN2:
(pre-Remove)response =“:A -725”
(删除后)response =“ - 725”(前面的空格 - )
解答:
我终于明白了。
显然,Watch窗口不会提示字符串中的转义字符。除非您专门为角色编制索引,否则您不会知道它们存在。
在Run2上,我在Watch窗口中查看了响应[0],发现了一个'\ n'字符。尽管答案显示为“:A -725”,但它实际上是“\ n:A -725”。
给我带来了比应有的更多麻烦。