Файл выходного потока не добавляет новую строку

Маленькая проблема здесь в моем фрагменте кода:

s = strcat(strdup(aLineOfText.data()), "n");
outputFile.write(s, aLineOfText.length()+1);

Я добавляю символ новой строки в конец строки и записываю его в текстовый файл, но новая строка, кажется, опущена. Я в основном пытаюсь добавить строку текста на новой строке каждый раз, но это просто добавить в той же строке. Я что-то упускаю?

2 ответа

  1. Strdup создает копию вашей строки, и strcat работает с этой копией, а не с оригиналом. Таким образом, вы не изменяете строку aLineOfText, а скорее временную копию, к которой вы не можете получить доступ впоследствии. Попробуйте этот код:

    char* temp = new char[aLineOfText.length()+2];
    strncpy(temp, aLineOfText.data(), aLineOfText.length()+2);
    strcat(temp, "\n");
    

    Если вы хотите добавить новую строку к существующей строке, вы должны ommit strdup и убедиться, что строка, записанная на достаточно большой (например, имеет по крайней мере пространство для еще двух символов, newline и null).

  2. Понял, слишком много думал об этом…

    Я просто, в дополнение к некоторым предложениям, должен был добавить характер возврата перевозки, чтобы сделать работу…

    outputFile.написать (aLineOfText.data (), aLineOfText.длина());
    outputFile <«;

    Спасибо!