繁体   English   中英

如何阅读西班牙文编码的文件并将其逐字符存储?

[英]How to read a Spanish encoded file and store it character by character?

由于文件是用西班牙语编写的,因此我很难读取文件并将其存储在内存中,我认为这可能是编码问题。 我想知道一种单独打印或存储每个字符的方法。 我已经尝试了很多事情,但是我发现最准确的方法是使用wstring readFile(const char* filename) ,如代码所示:

#include <sstream>
#include <fstream>
#include <iostream>
#include <fstream>
#include <algorithm>

std::wstring readFile(const char* filename)//Read using a file using wifstream
{
    std::wifstream wif(filename);

    std::wstringstream wss;

    wss << wif.rdbuf();
    return wss.str();
}

int main()
{
    std::wstring fileContent = readFile("read.txt"); //Read file to wstring.

    std::wcout << fileContent ; //Print the wstring. This works fine.
    std::cout << " " << std::endl;//Give spacing.

    wchar_t a; //create variable wchar_t.
    int fs = fileContent.size();
    std::cout << "Number of chars: " << fs; //Check content size.

    for (int i = 0; i < fs; i++){ //I want to print each letter.

        a = fileContent.at(i);  //Assign to "a" content of specified index.

        std::wcout << " " << a ; //Print character stored in variable a.
    }
}

在变量wchar_t a存储或打印fileContent.at(i)fileContent[i]的值时,似乎出现问题。 您知道代码中有哪些可以改进的地方,或者给我解决该问题的指南吗?

如果有帮助,我使用的是Macintosh和Linux。 谢谢!

您使用的是std::wifstream ,它使用wchar_t (UTF-16或UTF-32,取决于平台)返回Unicode字符,但是您没有告诉std::wifstream源文件的编码是什么,以便可以解码文件数据从西班牙语到Unicode。 在开始读取文件数据之前,您需要在std::wifstream imbue()合适的西班牙语语言环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM