0

我试图在 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”格式。

谢谢!

4

0 回答 0