使用文件路径填充WCHAR阵列
Fill a WCHAR array with filepaths
我试图用C++中的几个纹理文件路径填充WCHAR
数组,但我似乎不明白如何做到这一点。
我现在是怎么做的:
WCHAR WallTextureArray[]={L"../Engine/data/wall01.dds",L"../Engine/data/wall02.dds"};
这根本不是在编译。如果我只使用一个文件路径,它会用一个字符填充数组的每个索引,并且我需要WallTextureArray[0]
来包含完整的文件路径,依此类推
提前感谢。
使用此定义:
WCHAR WallTextureArray[] = { ...
您定义了一个WCHAR
的数组,即字符串。
如果您想要一个字符串数组,那么您可以定义一个指向WCHAR
s的指针数组:
const WCHAR* WallTextureArray[] = {
L"../Engine/data/wall01.dds",
L"../Engine/data/wall02.dds"
};
(由于这些是字符串文字,您不能修改它们,所以我添加了const
。)
请注意,在现代C++中,您可能希望使用方便的容器类,如std::vector
,而不是原始C样式数组,并将std::wstring
用于基于WCHAR
的字符串,例如
#include <string> // For std::wstring
#include <vector> // For std::vector
....
std::vector<std::wstring> WallTextureArray = {
L"../Engine/data/wall01.dds",
L"../Engine/data/wall02.dds"
};
您可以使用常见的[]
语法访问数组中的单个字符串(例如,WallTextureArray[0]
是第一个字符串,WallTextureArray[1]
是第二个字符串,等等)
此外,在给定std::wstring
的情况下,如果需要指向以NUL结尾的原始C样式字符串的指针(例如,对于与C API的互操作),则可以调用std::wstring::c_str()
方法。
您还可以向矢量添加更多字符串,例如使用std::vector::push_back()
方法:
WallTextureArray.push_back(L"../Engine/data/another_wall.dds");
您的代码声明了一个宽字符的一维数组,但您需要一个2d(wchars数组的数组)。第一个维度是字符串的数量,第二个维度是任何字符串的最大长度。因此,也许WCHAR WallTextureArray[][50]
会给你想要的(至少在你有一个超过49个字符的文件名之前)。
如果你不想对原始类型和大小大惊小怪,你也可以使用std::vector<std::wstring>>
。
编辑:Johnny Mopp的评论也会起作用,而且不那么脆弱,因为它不需要你修复第二维度。我建议这样做,而不是我最初的建议。
- OpenMP阵列性能较差
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 当我的阵列太大时出现分段错误
- MacOS通过在莫哈韦"wchar.h"下破碎的自制啤酒发出叮当声
- 位阵列上的快速AND运算
- 阵列必须使用大括号封闭的初始器进行初始化
- 没有从阵列<float>到阵列<int>的可行转换
- C++动态安全 2D 交错阵列
- 将平面阵列重塑为复杂的特征类型
- 如何使用英特尔 PIN 捕获阵列的所有负载?
- 为什么我能够为阵列分配比计算机实际拥有的内存更多的内存
- 库特<<恩德尔;不适用于打印 2D 阵列
- 数组类 阵列的打印输出
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)
- 从较小的阵列到较大的阵列的元素级转换
- 仅在大型阵列上出现合并排序分段错误
- 从阵列C++中删除重复项
- 阵列的大小在C++中是否灵活?
- 反转阵列中的正序列
- 使用文件路径填充WCHAR阵列