C++;创建一个简单的LPWSTR数组';s 作为C++ NoOB,即使我知道它应该是简单的,但是我不能把它弄清楚:{我需要创建一个LPWSTR数组,然后用唯一的字符串填充它。 LPWSTR *wszArray = new LPWSTR[5]; for(int x = 0; x < 5; x++) { swprintf(wszArray[x], "somestring_%d", x); } LPWSTR*wszArray=新的LPWSTR[5]; 对于(int x=0;x STD::String 被许多人使用(不是我!),它不支持 > P>我实际上也是C++中的新成员(只完成DeTelC++代码,没有更多),我只喜欢cstring:(如果我同意允许项目在项目设置中接受MFC库,如果我愿意,我会在头文件中包含整个库,然后我可以执行以下操作 CString str=""; CArray<CString,CString> arr; for(int i=0;i<n;i++) { str.Format("something_%d",i); arr.Add(str); } CString str=”“; 卡雷阿雷; 对于(int i=0;iOP试图分配一个宽字符串数组!我的错…那么我想我会做@Jerry Coffin发布的很多事情格式字符串也应该是宽swprintf(数组[i],L“somestring”\u%d),i)@JerryCoffin你能不用使用wostringstream就可以这样做吗?@mk1:我可以,但我看不到这样做的好理由。为什么,你看到wostringstream有什么可怕的地方吗?一个明显的可能性:for(int I=0;如果要检索值,数组[I]。str()对我不起作用,必须使用数组[I]。c_str()抱歉,这个问题是专门针对LPWSTR的。我有使用它的理由:)抱歉,这是一个输入错误-我在实际代码中使用了L“”。分配/解除分配是我遇到的问题。 std::vector<std::wstring> array; for (int i=0; i<5; i++) { std::wostringstream temp; temp << L"somestring_" << i; array.push_back(temp.str()); } CString str=""; CArray<CString,CString> arr; for(int i=0;i<n;i++) { str.Format("something_%d",i); arr.Add(str); }
我知道我还没有为LPWSTR分配内存,但是在尝试了一些事情之后,我没有太多的运气。而且我也不确定数组是否应该在我处理完字符串后释放C++;创建一个简单的LPWSTR数组';s 作为C++ NoOB,即使我知道它应该是简单的,但是我不能把它弄清楚:{我需要创建一个LPWSTR数组,然后用唯一的字符串填充它。 LPWSTR *wszArray = new LPWSTR[5]; for(int x = 0; x < 5; x++) { swprintf(wszArray[x], "somestring_%d", x); } LPWSTR*wszArray=新的LPWSTR[5]; 对于(int x=0;x STD::String 被许多人使用(不是我!),它不支持 > P>我实际上也是C++中的新成员(只完成DeTelC++代码,没有更多),我只喜欢cstring:(如果我同意允许项目在项目设置中接受MFC库,如果我愿意,我会在头文件中包含整个库,然后我可以执行以下操作 CString str=""; CArray<CString,CString> arr; for(int i=0;i<n;i++) { str.Format("something_%d",i); arr.Add(str); } CString str=”“; 卡雷阿雷; 对于(int i=0;iOP试图分配一个宽字符串数组!我的错…那么我想我会做@Jerry Coffin发布的很多事情格式字符串也应该是宽swprintf(数组[i],L“somestring”\u%d),i)@JerryCoffin你能不用使用wostringstream就可以这样做吗?@mk1:我可以,但我看不到这样做的好理由。为什么,你看到wostringstream有什么可怕的地方吗?一个明显的可能性:for(int I=0;如果要检索值,数组[I]。str()对我不起作用,必须使用数组[I]。c_str()抱歉,这个问题是专门针对LPWSTR的。我有使用它的理由:)抱歉,这是一个输入错误-我在实际代码中使用了L“”。分配/解除分配是我遇到的问题。 std::vector<std::wstring> array; for (int i=0; i<5; i++) { std::wostringstream temp; temp << L"somestring_" << i; array.push_back(temp.str()); } CString str=""; CArray<CString,CString> arr; for(int i=0;i<n;i++) { str.Format("something_%d",i); arr.Add(str); },c++,windows,arrays,string,winapi,C++,Windows,Arrays,String,Winapi,我知道我还没有为LPWSTR分配内存,但是在尝试了一些事情之后,我没有太多的运气。而且我也不确定数组是否应该在我处理完字符串后释放 任何建议都很好。LPWSTR是MS Windows中的unicode长字符串指针,请尝试使用L“”形式的字符串,例如: swprintf(wszArray[x],L“somestring_u%d”,x) Windows中的Unicode宏可以使用#定义Unicode,在MS VS中有一个使用Unicode字符串的设置,设置后,它将为您定义Unicode LPWSTR
任何建议都很好。LPWSTR是MS Windows中的unicode长字符串指针,请尝试使用L“”形式的字符串,例如: swprintf(wszArray[x],L“somestring_u%d”,x) Windows中的Unicode宏可以使用#定义Unicode,在MS VS中有一个使用Unicode字符串的设置,设置后,它将为您定义Unicode LPWSTR与wchar_t*相同,LPSTR为char*
在C++中分配内存时,应该始终是自由的,所以答案是肯定的。
实际上<代码> LpWSTR 已经是一个指针,你应该做的是
LPTSTR pBuffer; // TCHAR*
pBuffer = new TCHAR[128]; // Allocates 128 or 256 BYTES, depending on compilation.
然后的循环就可以了。
对于unicode长字符串,需要在字符串前面加上前缀
L
就像L“你的字符串”
稍后,您需要使用delete[]释放分配的内存。
比如:
delete[] pBuffer;
有关更多文档,请阅读:
您现在拥有的是指向宽字符指针的单个指针。然后,您将使用一个由5个动态分配的指向宽字符指针组成的数组的地址对其进行初始化。就目前而言,这很好,但不为字符串本身分配任何空间,只为指向5个字符串的指针分配空间。然后,您需要为字符串本身:
for (int i=0; i<5; i++) {
array[i] = new char[13];
swprintf(array[i], L"somestring_%d", i);
}
for(int i=0;i学习和做一些研究和开发是不同的方面。但您不应该使用这些原生方法进行字符串处理。而是使用类,如std::string
,stringstream
,CString
等
<>代码> STD::String 被许多人使用(不是我!),它不支持<代码> > P>我实际上也是C++中的新成员(只完成DeTelC++代码,没有更多),我只喜欢cstring:(如果我同意允许项目在项目设置中接受MFC库,如果我愿意,我会在头文件中包含整个库,然后我可以执行以下操作
CString str="";
CArray<CString,CString> arr;
for(int i=0;i<n;i++)
{
str.Format("something_%d",i);
arr.Add(str);
}
CString str=”“;
卡雷阿雷;
对于(int i=0;iOP试图分配一个宽字符串数组!我的错…那么我想我会做@Jerry Coffin发布的很多事情格式字符串也应该是宽swprintf(数组[i],L“somestring”\u%d),i)
@JerryCoffin你能不用使用wostringstream
就可以这样做吗?@mk1:我可以,但我看不到这样做的好理由。为什么,你看到wostringstream
有什么可怕的地方吗?一个明显的可能性:for(int I=0;如果要检索值,数组[I]。str()对我不起作用,必须使用数组[I]。c_str()抱歉,这个问题是专门针对LPWSTR的。我有使用它的理由:)抱歉,这是一个输入错误-我在实际代码中使用了L“”。分配/解除分配是我遇到的问题。
std::vector<std::wstring> array;
for (int i=0; i<5; i++) {
std::wostringstream temp;
temp << L"somestring_" << i;
array.push_back(temp.str());
}
CString str="";
CArray<CString,CString> arr;
for(int i=0;i<n;i++)
{
str.Format("something_%d",i);
arr.Add(str);
}