【发布时间】:2015-08-07 17:18:43
【问题描述】:
在此问题Split char* to char * Array 的副本中,建议使用字符串而不是字符*。但我需要与 LPWSTR 合作。因为它是 char* 的 typedef,所以我更喜欢使用 char*。我尝试使用以下代码,但输出错误:
char**splitByMultipleDelimiters(char*ori,char deli[],int lengthOfDelimiterArray)
{
char*copy = ori;
char** strArray = new char*[10];
int j = 0;
int offset = 0;
char*word = (char*)malloc(50);
int length;
int split = 0;
for(int i = 0; i < (int)strlen(ori); i++)
{
for(int k = 0; (k < lengthOfDelimiterArray) && (split == 0);k++)
{
if(ori[i] == deli[k])
{
split = 1;
}
}
if(split == 1)//ori[i] == deli[0]
{
length = i - offset;
strncpy(word,copy,length);
word[length] = '\0';
strArray[j] = word;
copy = ori + i + 1;
//cout << "copy: " << copy << endl;
//cout << strArray[j] << endl;
j++;
offset = i + 1;
split = 0;
}
}
strArray[j] = copy;
// string strArrayToReturn[j+1];
for(int i = 0; i < j+1; i++)
{
//strArrayToReturn[i] = strArray[i];
cout << strArray[i] << endl;
}
return strArray;
}
void main()
{
char*ori = "This:is\nmy:tst?why I hate";
char deli[] = {':','?',' ','\n'};
int lengthOfDelimiterArray = (sizeof(deli)/sizeof(*deli));
splitByMultipleDelimiters(ori,deli,lengthOfDelimiterArray);
}
还有其他方法可以拆分LPWSTR吗?
【问题讨论】:
-
只在需要的地方使用
LPWSTR。为什么仅仅因为您稍后需要转换为 C 字符串(通常可以使用c_str完成)而使处理字符串变得更加困难? -
LPWSTR 不是指向字符数组的指针。它是一个指向wide char 数组的指针。我的朋友,你将不得不将你的想法转移到 unicode 上。
-
“错误输出” 不是错误描述。由于没有人会读懂您的想法,因此要了解您期望的正确输出,这不是很有帮助。描述错误时,始终包括预期行为和观察到行为。
标签: c++ arrays pointers winapi