C++ cout или wcout строка, содержащая "\n", не разбивает строки

C++11 и компилятор TDM-GCC.

Я сделал INI-файл и прочитал строку из него (UCS-2 LE BOM), используя WinAPI, GetPrivateProfileStringW.

[String]
Example = Today\nYesterday\nApple

Моя библиотека функций вернет переменную std::wstring. И выглядит хорошо. Затем используйте wcout, как:

#include <iostream>
#include <string>

using namespace std;
wstring readString = GetPrivateProfileStringW();    // Hide the details.
wcout << readString << endl;

И что я получаю на моем экране:

Today\nYesterday\nApple

Что я хочу:

Today
Yesterday
Apple

Я не уверен, почему "\n" не работает в этой ситуации.

Чтобы избежать этого, я могу создать несколько ключей INI и назначить их с помощью "endl".

Но в этом проекте, сколько строк здесь должно быть динамическим.

Как вывести единственную строковую переменную из Windows API на экран, стать несколькими строками?

1 ответ

Решение

Последовательность \n распознается только компилятором в исходном коде как часть литеральной строки или символа. Это ничего, что встроено в библиотеку или любые стандартные функции.

Если вы хотите, чтобы последовательность представляла новую строку внутри ввода, который вы прочитали из внешнего источника, вы должны обработать ее самостоятельно.

Другие вопросы по тегам