Open2
最長しりとり
C++ での日本語の扱い
- wstring を使う
- ifstream は wifstream, istringstream は wistringstream に
- おまじないが多い
- locale
- wcout を使う。 cout は使わない。
- なんでこれでうまくいくのか分からない。
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <codecvt>
using namespace std;
int main()
{
// wcout で出力されるようにするおまじない
std::ios_base::sync_with_stdio(false);
wcout.imbue(std::locale(""));
std::locale utf8( std::locale(), new std::codecvt_utf8<wchar_t> );
wcout.imbue(utf8);
// csv の日本語を取り出せるようにするおまじない
wifstream wifs("csv_file_name");
wifs.imbue(utf8);
wstring line;
while(getline(wifs, line)) {
wistringstream wiss(line);
// 処理;
}
return 0;
}