Я использую метод String :: Remove для удаления первых трех символов строки.Тем не менее, я получаю неожиданные результаты от метода.
При первом запуске моей функции она возвращает строку с удаленными первыми двумя символами.В следующий раз, когда моя функция запускается, она возвращает строку, в которой удален только первый символ.
Есть ли скрытые символы в строке?Если да, то как мне их увидеть / удалить?
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:
(pre-Remove) response = ": A0 TENTHS "
(post-Remove) response =" 0 TENTHS "(без пробела перед 0)
Run2:
(pre-Remove) response =": A -725 "
(после удаления) ответ =" -725 "(пробел перед -)
ОТВЕТ:
Iнаконец-то понял.
Судя по всему, окно Watch не будет подсказывать escape-символы в строке.Вы не узнаете, что они существуют, если не будете специально индексировать символ.
При запуске 2 я просмотрел ответ [0] в окне «Наблюдение» и заметил символ «\ n».Несмотря на то, что ответ показывался как «: -725», на самом деле это было «\ n: -725».
Вызвала у меня больше проблем, чем следовало.