Я пытаюсь найти положение символа табуляции в строке.
Однако это не работает для меня.
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;
}
Я читаю 2 первых символа в начале пустоты, потому что текстовый файл в формате Windows «Unicode».
Спасибо!
Задача ещё не решена.
Других решений пока нет …