在Unicode编码下vector<string> v = split(str, " ")中不存在CString到const std::string怎么解决
时间: 2024-02-25 18:59:26 浏览: 114
cstring用法详解.doc
在Unicode编码下,`std::string`和`CString`之间没有直接的转换方式。可以考虑使用MFC库中的CStringA和CStringW类,分别表示ANSI编码和Unicode编码的字符串。具体的做法是,在读取文件时,使用`CStringW`类来读取Unicode编码的字符串;在分割字符串时,使用`CStringA`类将其转换为ANSI编码的字符串,再将其转换为`std::string`类型。例如:
```
while (file.ReadString(str)) {
CStringW wstr(str);
CStringA astr(wstr);
std::string utf8str(astr);
vector<string> v = split(utf8str, " ");//分隔符,此处以空格作为分隔符
m_List.InsertItem(i, L"");
m_List.SetItemText(i, 0, CA2T(v[0].c_str(), CP_UTF8));
m_List.SetItemText(i, 1, CA2T(v[1].c_str(), CP_UTF8));
m_List.SetItemText(i, 2, CA2T(v[2].c_str(), CP_UTF8));
m_List.SetItemText(i, 3, CA2T(v[3].c_str(), CP_UTF8));
m_List.SetItemText(i, 4, CA2T(v[4].c_str(), CP_UTF8));
m_List.SetItemText(i, 5, CA2T(v[5].c_str(), CP_UTF8));
i++;
}
```
需要注意的是,由于`CStringW`和`CStringA`之间的转换可能会引起编码的转换,因此在使用`CA2T`函数进行双向转换时,需要指定正确的编码类型,例如使用`CP_UTF8`表示UTF-8编码。
阅读全文