我正在尝试使用C ++中的几个文件路径填充WCHAR
数组,但我似乎无法理解如何操作。
我现在怎么做:
WCHAR WallTextureArray[]={L"../Engine/data/wall01.dds",L"../Engine/data/wall02.dds"};
这根本就没有编译。如果我只用一个文件路径来完成它,它会用一个字符填充数组的每个索引,我需要WallTextureArray[0]
来包含一个完整的文件路径,依此类推。
先谢谢。
答案 0 :(得分:1)
您的代码声明了一个宽字符的一维数组,但您需要一个2d(一组wchars数组)。第一个维度是字符串的数量,第二个维度是任何字符串的最大长度。所以也许WCHAR WallTextureArray[][50]
会给你你想要的东西(至少在你有一个超过49个字符的文件名之前)。
如果您不想对原始类型和尺寸感兴趣,也可以使用std::vector<std::wstring>>
。
编辑:Johnny Mopp的评论也会起作用并且不那么脆弱,因为它不需要你修复第二个维度。我推荐这个超出我原来的建议。
答案 1 :(得分:1)
有了这个定义:
WCHAR WallTextureArray[] = { ...
您定义了WCHAR
&#39; s的数组,即字符串。
如果你想要一个字符串数组,那么你可以定义一个指针数组WCHAR
s :
const WCHAR* WallTextureArray[] = {
L"../Engine/data/wall01.dds",
L"../Engine/data/wall02.dds"
};
(由于这些是字符串文字,你无法修改它们,我已添加const
。)
请注意,在现代C ++中,您可能希望使用方便的容器类(如 std::vector
而不是原始C样式数组),并使用std::wstring
作为{{1基于字符串,例如
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]
,如果需要指向原始C样式NUL终止字符串的指针(例如,对于使用C API的互操作),则可以调用std::wstring
方法。
您还可以向矢量添加更多字符串,例如使用std::wstring::c_str()
方法:
std::vector::push_back()