在 C++/cli 中使用 System::IO::File::ReadAllLines()

Posted

技术标签:

【中文标题】在 C++/cli 中使用 System::IO::File::ReadAllLines()【英文标题】:Using System::IO::File::ReadAllLines() in C++/cli 【发布时间】:2013-06-11 17:57:38 【问题描述】:

我正在尝试在我的 C++ 项目中使用 C# 方法 System::IO::File::ReadAllLines(),但每次我尝试将 System::String^ 传入方法时,它都会在方法下划线并说:

“cli::array<:string>”类型的值不能用于初始化“System::String^”类型的实体

这是什么意思?我的代码:

#define IO System::IO
int main()

  System::String ^ path = gcnew System::String("C:\\text.txt");
  System::String ^ lines = IO::File::ReadAllLines(path);
  return 0;

C++ 中也有替代函数吗?

我已设置要使用的项目 /clr。

如果您需要更多信息,请告诉我,我会提供。

【问题讨论】:

顺便说一句,ReadAllLines() 不是“C# 方法”,它是一个 .Net 方法,但没有任何特定于 C# 的内容。 使用 File::ReadAllText() 如果您实际上只是想获取包含所有文件内容的单个字符串。 ReadAllLines() 返回一个数组,就像编译器错误消息所说的那样。 【参考方案1】:

您误解了您收到的错误。 ReadAllLines 返回一个字符串数组,而不是包含整个文件内容的字符串。 ReadAllText 返回一个包含整个文件内容的字符串。

// if you would like an array of strings
array<String^>^ lines = File::ReadAllLines(path);

// or

// if you would like a single string with the file contents
String^ lines = File::ReadAllText(path);

【讨论】:

以上是关于在 C++/cli 中使用 System::IO::File::ReadAllLines()的主要内容,如果未能解决你的问题,请参考以下文章

在 c# 中使用 System.IO.Packaging 对 .xlsx 文件进行数字签名

使用 vb.net 和 System.IO.Compression (.Net 4.5) 压缩文件

C#WPF应用程序怎样读取excel表格数据?

如何读取图片文件,并且放在一个byte数组当中?

使用 System.IO.File.Move 时自动创建文件夹

System.IO.DirectoryNotFoundException 找不到路径“C:\home\site\Temp\filename.msi”的一部分