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");
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;
}
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。