String :: Remove方法的奇怪行为

时间:2011-05-20 20:54:25

标签: .net visual-c++

我使用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”。

给我带来了比应有的更多麻烦。

0 个答案:

没有答案