我需要读取一个csv(UNICODE)并将数据放入二维数组中,现在我已经使用字符串完成了它但我需要使用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");
}
}
答案 0 :(得分:0)
如果您确定您的文件确实是unicode(如UTF-16)并且有两个字节编码的字符,请使用&#34; w&#34;流和字符串(std::wifstream
和std::wstring
)。
如果您的文件可能是UTF-8或任何其他编码,则应首先执行转换(因此,请先将其读取为通常的字节流,然后再转换为wstring
)。
对于从UTF-8转换为宽字符串(到wstring
,可以转换为unicode windows字符串),您可以使用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
。