C++ 使用fstream打开文本文件,但文件名字符不是ASCII格式

C++ 使用fstream打开文本文件,但文件名字符不是ASCII格式,c++,C++,可能重复: 我想用C++ fScript打开一个文本文件,但是文件名中使用的字符没有落入ASCII字符集。 例如: fstream fileHandle; fileHandle.open("δ»Wüste.txt"); 有并没有一种方法可以让我用这样的名字打开文件 谢谢 Vivek在Windows上,您可以使用长字符串: fileHandle.open(L"δ»Wüste.txt"); 在Windows上,可以使用长字符串: fileHandle.open(L"δ»Wüste.txt"

可能重复:

<>我想用C++ fScript打开一个文本文件,但是文件名中使用的字符没有落入ASCII字符集。 例如:

 fstream fileHandle;
 fileHandle.open("δ»Wüste.txt");
有并没有一种方法可以让我用这样的名字打开文件

谢谢
Vivek

在Windows上,您可以使用长字符串:

fileHandle.open(L"δ»Wüste.txt");

在Windows上,可以使用长字符串:

fileHandle.open(L"δ»Wüste.txt");
从JALF的问题中注意到C++标准库不是Unicode感知的,但是有一个Windows扩展名接受WHARCHART数组。 您将能够在windows平台上打开文件,方法是使用wchar\t数组作为参数在fstream对象上创建或调用open

fstream fileHandle(L"δ»Wüste.txt");
fileHandle.open(L"δ»Wüste.txt");
上述两种方法都将调用相应函数的wchar_t*版本,因为字符串上的L前缀表示它将被视为unicode字符串

编辑:这里有一个完整的例子,应该编译并运行。我在我的计算机上创建了一个名为
δ»Wüste.txt
的文件,内容是
这是一个测试。
然后我在同一目录下编译并运行了以下代码

#include <fstream>
#include <iostream>
#include <string>

int main(int, char**)
{
  std::fstream fileHandle(L"δ»Wüste.txt", std::ios::in|std::ios::out);

  std::string text;
  std::getline(fileHandle, text);
  std::cout << text << std::endl;

  system("pause");

  return 0;
}
从JALF的问题中注意到C++标准库不是Unicode感知的,但是有一个Windows扩展名接受WHARCHART数组。 您将能够在windows平台上打开文件,方法是使用wchar\t数组作为参数在fstream对象上创建或调用open

fstream fileHandle(L"δ»Wüste.txt");
fileHandle.open(L"δ»Wüste.txt");
上述两种方法都将调用相应函数的wchar_t*版本,因为字符串上的L前缀表示它将被视为unicode字符串

编辑:这里有一个完整的例子,应该编译并运行。我在我的计算机上创建了一个名为
δ»Wüste.txt
的文件,内容是
这是一个测试。
然后我在同一目录下编译并运行了以下代码

#include <fstream>
#include <iostream>
#include <string>

int main(int, char**)
{
  std::fstream fileHandle(L"δ»Wüste.txt", std::ios::in|std::ios::out);

  std::string text;
  std::getline(fileHandle, text);
  std::cout << text << std::endl;

  system("pause");

  return 0;
}

@看,这个问题的描述是正确的。它不是重复的。它看起来和我一样,但我会回答它。文件名本质上是特定于系统的,并且取决于底层文件系统支持什么。语言无法定义它。@Ephphatha请看,这个问题的描述是正确的。它不是重复的。它看起来和我一样,但我会回答它。文件名本质上是特定于系统的,并且取决于底层文件系统支持什么。语言无法定义它。我需要用fstream来定义它。我已经阅读了上一篇与此相关的文章。我不确定你在问什么。对不起,我提供的示例适用于我的windows系统并使用fstream。我需要fstream。我已经阅读了上一篇与此相关的文章。我不确定你在问什么。对不起,我提供的示例在windows系统上适用,并且使用fstream。