0

我想从 Linux 平台的 C++ 程序中的文件中读取 utf-8 字符。在 fgets() 函数中,它返回垃圾字符代替 utf-8 字符。input.txt 有文本 triuöschen

#include <stdio.h>
#include <string>

int main()
{
    FILE* fpointer = NULL;
    std::string szFileData = "";
    char cLine[1025] = "\0";
    int iTrailingPointer = 0;
    try {

        const char* pcFileName = "input.txt";
        //OPEN THE FILE IN READ MODE...
        fpointer = fopen(pcFileName, "r");
        if (fpointer == NULL)
        {
            printf("\n Error reading file %s", szFileData.c_str());
            return 0;
        }
        //READ THE FILE DATA TILL THE END OF FILE...
        while (!feof(fpointer))
        {
            memset(cLine, '\0', 1024);
            fgets(cLine, 1024, fpointer);
            iTrailingPointer = (int)strlen(cLine) - 1;

            //REMOVE TRAILING SPACES AND NEWLINES...
            while (cLine[iTrailingPointer] == '\n' || cLine[iTrailingPointer] == ' ' ||
                cLine[iTrailingPointer] == '\t')
            {
                iTrailingPointer--;
            }

            cLine[iTrailingPointer + 1] = '\0';
            szFileData = szFileData + cLine;
            printf("\n szFileData: %s", szFileData.c_str());
        }
        fclose(fpointer);

    }
    catch (...) {

    }
    return 0;
}
4

0 回答 0