Я пытаюсь получить номер строки из позиции CARETS в текстовом поле, вот что у меня есть:Получить номер строки из CARET
int Editor::GetLineFromCaret(const std::wstring &text)
{
unsigned int lineCount = 1;
for(unsigned int i = 0; i <= m_editWindow->SelectionStart; ++i)
{
if(text[i] == '\n')
{
++lineCount;
}
}
return lineCount;
}
Но я получаю некоторые странные ошибки. Например, если у меня есть 10 строк текста в текстовом поле и используйте эту функцию, он не даст мне правильный номер строки, если каретка не будет содержать 10 символов в строке, а некоторые строки не будут содержать символов, поэтому они будут неверными.
Это, как я решил эту проблему с помощью от Damir Arh:
int Editor::GetLineFromCaret(const std::wstring &text)
{
unsigned int lineCount = 1;
unsigned int selectionStart = m_editWindow->SelectionStart;
for(unsigned int i = 0; i <= selectionStart; ++i)
{
if(text[i] == '\n')
{
++lineCount;
++selectionStart;
}
}
return lineCount;
}
Ваш LineCount выключен один, когда я возвращаюсь к предыдущей строке. Я отвечу правильно, потому что вы помогли мне разобраться, в чем проблема. Мне не пришлось принимать во внимание «\ r». Я обновил свой вопрос с ответом. –