Сообщение Re: Считать из файла строки в вектор от 17.09.2019 6:39
Изменено 17.09.2019 6:47 rg45
Re: Считать из файла строки в вектор
Здравствуйте, mdaii, Вы писали:
M>Сохраняю вектор юникодовых строк в файл таким образом.
Все делается простыми записью-чтением потоков. Не забываем только настраивать локаль для юникода:
http://coliru.stacked-crooked.com/a/dde9e62ea8b0be62
M>Сохраняю вектор юникодовых строк в файл таким образом.
Оригинальный пример | |
M>
M> А как сделать обратную операцию? Т. е. считать из файла строки в вектор. | |
Все делается простыми записью-чтением потоков. Не забываем только настраивать локаль для юникода:
http://coliru.stacked-crooked.com/a/dde9e62ea8b0be62
void Save(const std::vector<std::wstring>& lines, const std::string& file)
{
std::wofstream output(file);
output.imbue(std::locale("en_US.UTF8"));
for (const std::wstring& line : lines)
{
output << line << L"\n";
}
}
void Load(std::vector<std::wstring>& lines, const std::string& file)
{
std::wifstream input(file);
input.imbue(std::locale("en_US.UTF8"));
std::wstring line;
while (std::getline(input, line))
{
lines.push_back(line);
}
}
Re: Считать из файла строки в вектор
Здравствуйте, mdaii, Вы писали:
M>Сохраняю вектор юникодовых строк в файл таким образом.
Все делается простыми записью-чтением потоков. Не забываем только настраивать локаль для юникода:
http://coliru.stacked-crooked.com/a/dde9e62ea8b0be62
M>Сохраняю вектор юникодовых строк в файл таким образом.
Оригинальный пример | |
M>
M> А как сделать обратную операцию? Т. е. считать из файла строки в вектор. | |
Все делается простыми записью-чтением потоков. Не забываем только настраивать локаль для юникода:
http://coliru.stacked-crooked.com/a/dde9e62ea8b0be62
#include <iostream>
#include <fstream>
#include <vector>
void Save(const std::vector<std::wstring>& lines, const std::string& file)
{
std::wofstream output(file);
output.imbue(std::locale("en_US.UTF8"));
for (const std::wstring& line : lines)
{
output << line << L"\n";
}
}
void Load(std::vector<std::wstring>& lines, const std::string& file)
{
std::wifstream input(file);
input.imbue(std::locale("en_US.UTF8"));
std::wstring line;
while (std::getline(input, line))
{
lines.push_back(line);
}
}
int main()
{
const std::string file = "test.txt";
const std::vector<std::wstring> saved_lines {
L"xxxⒶⒷⒸⒹⒺⒻⒼⒽⒾⓘⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ",
L"Merhaba dünya!",
L"こんにちは世界!"
};
Save(saved_lines, file);
std::vector<std::wstring> loaded_lines;
Load(loaded_lines, file);
std::cout << "Saved and loaded lines are equal: " << std::boolalpha << (saved_lines == loaded_lines) << std::endl;
}