0
我试图让一个文本框从插入记号位置的行号,这里是我有:获取行号从插入符号
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个字符,并且某些行将没有字符,因此它将不正确。
这是我如何解决这个问题有帮助,从达米尔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
字符考虑计算。我会将你的答案标记为正确的,因为你帮助我找出问题所在。我不必考虑'\ r'。我用答案更新了我的问题。 –