【发布时间】:2011-11-23 05:23:22
【问题描述】:
我必须先读取西里尔文的文件,然后随机选择随机行数并将修改后的文本写入不同的文件。拉丁字母没有问题,但我遇到了西里尔文字的问题,因为我得到了一些垃圾。所以这就是我尝试做的事情。
说,文件input.txt是
ааааааа
ббббббб
ввввввв
我必须阅读它,并将每一行放入一个向量中:
vector<wstring> inputVector;
wstring inputString, result;
wifstream inputStream;
inputStream.open("input.txt");
while(!inputStream.eof())
{
getline(inputStream, inputString);
inputVector.push_back(inputString);
}
inputStream.close();
srand(time(NULL));
int numLines = rand() % inputVector.size();
for(int i = 0; i < numLines; i++)
{
int randomLine = rand() % inputVector.size();
result += inputVector[randomLine];
}
wofstream resultStream;
resultStream.open("result.txt");
resultStream << result;
resultStream.close();
那么我怎样才能使用 Cyrillic 来生成可读的东西,而不仅仅是符号呢?
【问题讨论】:
-
readable things, not just symbols?是什么意思result.txt是什么样的,您想要它是什么样的? -
我想得到 аааааавввввввв 的东西,但是得到 2A =04 ?@> (那样的东西)。我不知道如何阅读西里尔文,以及如何写回西里尔文。
-
文件的编码是什么?
-
我使用 Unicode 进行文件编码。也试过 _setmode(_fileno(stdout), _O_U16TEXT); - 适用于控制台输出,但我仍然在文件中得到垃圾。
-
您在 Windows 上吗?打开
resultStream后,在输出result之前尝试resultStream.write("\xFEFF", 4);或resultStream.write("\xFFFE", 4);行,看看你得到了什么。
标签: c++ file input wofstream wifstream