NdArray<string>a=fromfile<string>(path,' ')
时间: 2023-12-07 17:03:49 浏览: 112
NumCpp的`fromfile`函数不支持读取文本文件,只支持读取二进制文件。如果您要读取一个纯文本文件,可以使用C++标准库中的文件读取函数来实现。
如果您想要使用NumCpp的`fromfile`函数读取二进制文件,并将其解析为一个字符串类型的NdArray,那么您需要先将每个字符串转为一个固定长度的字符数组,然后再使用`fromfile`函数读取二进制文件并解析为NdArray。例如,假设您要读取的文件中每个字符串都不超过20个字符,那么您可以使用以下代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <numcpp.hpp>
int main()
{
std::string path = "test.dat";
const int N = 5;
const int str_len = 20;
char str[str_len];
nc::NdArray<char> str_array(N, str_len);
// 将每个字符串转为固定长度的字符数组
std::ifstream file(path, std::ios::binary);
for (int i = 0; i < N; i++)
{
std::getline(file, str, ' ');
std::strcpy(str_array.ptr(i), str);
}
// 读取二进制文件并解析为字符串类型的NdArray
nc::NdArray<char> data = nc::fromfile<char>(path, ' ', N * str_len);
nc::NdArray<std::string> str_ndarray(N);
for (int i = 0; i < N; i++)
{
str_ndarray(i) = std::string(str_array.ptr(i));
}
std::cout << "str_ndarray:\n" << str_ndarray << std::endl;
std::cout << "data:\n" << data << std::endl;
return 0;
}
```
其中,`test.dat`是一个包含5个字符串的文件,每个字符串之间用空格隔开。上述代码先将每个字符串转为一个20个字符的字符数组`str_array`,然后使用`fromfile`函数读取二进制文件并解析为字符类型的NdArray`data`,最后再将`str_array`中的每个字符数组转为字符串类型的NdArray`str_ndarray`。
阅读全文