我试图在 wstring 中找到制表符的位置。
但是它对我不起作用。
int n = wline.find(L"\t");
n 是 -1,尽管我确定 wstring 中有一个制表符。
有人看到我的错误吗?我在想也许 L"\t" 可能不正确,但是当我删除 L 时,它就不再编译了。
编辑:我现在发布整个代码,也许问题出在其他地方:
void clsCharacterTranslations::LoadSerializedCharacters(string file)
{
FILE* inFile = fopen(file.c_str(), "rb");
wchar_t signature[2];
fread(signature, sizeof(wchar_t), 1, inFile);
wstring wline;
while (GetLineW(inFile, wline))
{
udtCharacterTranslation st;
int b = 0;
int n = wline.find(L"\t");
wstring ws1 = wline.substr(0,n-b);
b = n+1;
n = wline.find(L"\t",b);
wstring ws2 = wline.substr(b,n-b);
st.Text = ws1;
st.Translation = ws1;
m_content.push_back(st);
}
fclose(inFile);
}
bool GetLineW(FILE *inFile, wstring &result)
{
wchar_t data[2]={0,0};
result = L"";
do{
fread(data, sizeof(wchar_t), 1, inFile);
if (data[0]>=L' ')
result += data;
if (data[0]==0x0A)
break;
}while(!feof(inFile));
if (result.size()>0)
return true;
else
return false;
}
我正在读取 void 开头的 2 个第一个字符,因为文本文件是 Windows“Unicode”格式。
谢谢!