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" /> 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" />

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++;创建一个简单的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分配内存,但是在尝试了一些事情之后,我没有太多的运气。而且我也不确定数组是否应该在我处理完字符串后释放


任何建议都很好。

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);
    }