打开目录功能

Opening directory function

本文关键字:功能      更新时间:2023-10-16

这是一个与概念相关的基本理解问题。

工作用途:内河码头C++生成器

两者

之间有什么区别:

opendir("C:\XYZ")

String file = "C:\XYZ";
opendir(file);

不是都是字符串吗?第一个有效,但 sexond 给了我错误:E2034 无法将 Unicode 字符串转换为"常量字符*"

在我从用户那里获取输入的情况下,我只能传递一个字符串。如何传递整个路径?

第一个是const char*,第二个是std::string。opendir函数仅接受您情况下的const char*,因此无法自行将std::string转换为const char*。您可以通过opendir(file.c_str()); 来使函数工作。

No. 字符串不是字符数组。 OpenDir 需要一个 char 数组。

opendir()需要8位窄const char*作为输入。 当你将一个狭义的文字传递给opendir()时,你传递它const char[],这隐含地降级为const char*,一切都很好。

StringSystem::String,它是System::UnicodeString的typedef,是Embarcadero的UTF-16编码字符串类(类似于std::wstring,但语义不同)。 当您将String传递给opendir() 时,您会收到转换错误。

要将String值传递给opendir()(或任何其他期望char*的函数),您需要首先将其转换为System::AnsiString,然后使用AnsiString::c_str()从中获取char*,例如:

String file = "C:\XYZ";
opendir(AnsiString(file).c_str());