У меня есть строковый объект общего вида string line = "yadayada\nyadaya"
. Я выполняю цикл по строке, как показано ниже, пытаясь "поймать" символ новой строки.
for (int i = 1; i < line.length(); i++)
{
if ( ( line[i]== ' \ ') && ( line[i+1] == 'n' ) )
{
buffer.insertChar('\n');
i = i+2;
}
else
{
buffer.insertChar(line[i]);
}
}
Как вы видите, я перебираю символы строки и вставляю их один за другим в другой объект под названием buffer (не имеющий отношения к вопросу).
В первом if if ( ( ( line[i]== ' \ ') && ( line[i+1] == 'n' ) )
я пытаюсь "поймать" символ новой строки и внутри этого if увеличиваю индекс i на два, чтобы пропустить символы '\' и 'n' в следующем цикле. Проблема в том, что этот цикл никогда не ловит символ новой строки, а всегда вставляет в буфер два отдельных символа '\' и 'n'.
Важное замечание: я начинаю цикл с индекса i = 1, потому что первый символ действует как команда и обрабатывается особым образом.
Обновление: Я изменил вышеприведенный код, но все еще не повезло с тем, чего я пытаюсь достичь
for (int i = 1; i < line.length(); i++)
{
if ( (line[i]== '\n') )
{
buffer.insertChar('\n');
i = i+1;
}
else
{
buffer.insertChar(line[i]);
}
}
Обновление # 2: Если это поможет, строка создается из ввода пользователя, как показано ниже:
string line;
getline(cin,line);