读取 CSV 文件(UNICODE 编码)C++时出现编码错误
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
。
相关文章:
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 为什么我在编码中总是出现性能错误?
- C++ 分段错误:11 错误,同时编码将两个数字相加的链接列表
- Opus编码和解码没有错误,但值不同
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 有没有办法将 vector<unsigned char> 插入 postgresql 表中,具有 bytea 属性,没有 UTF8 编码错误?
- Rapidjson 解析错误:字符串 (207) 中的编码无效
- UWP和SerialSample字节编码错误
- 读取 CSV 文件(UNICODE 编码)C++时出现编码错误
- C++正在创建二进制搜索树:EXC_BAD_ACCESS错误.算法错误还是编码错误
- C++if语句编码错误
- C++中的奇怪编码错误
- 可撕裂机器人手臂编码错误
- 使用C++从MySQL数据库获取字符串时编码错误
- 在Visual Studio中编码错误比涡轮增压C++ - C
- 函数返回基类而不是派生类,这是编码错误还是Visual c++ bug ?
- SNMP:无法创建/设置变量,编码错误
- linux上的文本编码错误
- POCO C++SAX解析器:如果xml文档编码是ANSI,那么下一条语句不是读取并抛出编码错误异常