[英]Encoding error reading CSV file (UNICODE encoded) C++
我需要讀取一個csv(UNICODE)並將數據放入2d數組中,現在我已經使用字符串完成了處理,但是我需要使用LPTSTR進行處理,因為我要處理的csv是UNICODE編碼的,並且使用了我無法讀取的字符串任何東西。
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>
#include <windows.h>
#include <stdio.h>
#include <time.h>
using namespace std;
int main()
{
vector<vector<string> > values;
vector<string> valueline;
ifstream fin("C:\\Users\\Administrator\\Desktop\\test.csv");
string item;
for (string line; getline(fin, line); )
{
istringstream in(line);
while (getline(in, item, ';'))
{
valueline.push_back(item.c_str());
}
values.push_back(valueline);
valueline.clear();
}
fin.close();
int i = 0;
for (i = 0; i < values.size(); i++) {
for (int j = 0; j < values[i].size(); j++){
printf("%s;",values[i][j]);
}
printf("\n");
}
}
如果您確定文件確實是unicode(例如UTF-16)並且具有兩個字節編碼的字符,請使用“ w”流和字符串( std::wifstream
和std::wstring
)。
如果您的文件可以采用UTF-8或任何其他編碼,則應首先執行轉換(因此,請先按常規字節流讀取它,然后轉換為wstring
)。
為了從UTF-8轉換為寬字符串(轉換為wstring
,可以轉換為Unicode窗口字符串),可以使用std::wstring_convert
及其成員函數from_bytes
將UTF-8字節轉換為Unicode字符:
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> convert;
std::wstring myunicodestr = convert.from_bytes(myutf8str);
如果您必須處理其他特定的編碼,則可能需要為此使用特定的庫,例如iconv
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.