一个函数数组的基础问题!急!! a[0] = aaa a[1] = bbb a[2] = cc ===========看不明白,你的目标是一个数组,但是你要的结果是三个数组啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该将目标定义成char *dest[3]才行。 wltg2001 :可能我表达错了,就是想把一个字符串按指定的字符分割返回。但是又要注意线程安全和不能用MFC的类库 因为我是用delphi的,在c++里不知道该怎么表达;在delphi就是var s array of string;然后setlength(s, 20);这样就会有个动态的字符串数组了可以这样使用 s[0]:= 'aaa';s[1]:= 'bbb';s[n]:= '...'; int i=0,j=0,k=0;while(src[i]!='\0'){ if(src[i] == ' ') { ++j; k=0; } else { dest[j][k] = src[i] ++k; } ++i;} 随便写的 尽供参考。。 记得有人问过这样的问题,我是这样回答的:void SplitString(CString str, char split,CStringArray& strGet) { //str为待分割的CString,split为分割符如:, ¦或空格 strGet为输出参数,你得到的字符串存放在strGet中 int pos = -1; pos = str.Find(split); while(pos != -1) { CString strSun = ""; strSun = str.Left(pos); strGet.Add(strSun); str.Delete(0,pos); pos = str.Find(split); } if(str != "") {//最后剩下的字符串可能没有split这个标示,看你需要怎么处理了 //这里也把他加入到strGet中 strGet.Add(str); } } 假设你的输出函数是void PrintStr(CString str); CString str = "sssdf sfds jieuri lj122 98098"; CStringArray strArray; strArray.RemoveAll(); SplitString(str,' ',strGet); int count = strGet.GetSize(); for(int i=0;i <count;i++) { PrintStr(strGet[i]); } 不知是否符合你的要求,供参考!也可以参考http://topic.csdn.net/u/20080905/00/e87184ed-b6de-47b1-a6c7-d448d8e10ef2.html和你提了类似的问题。 楼上的 CStringArray 好像要引用afx之类的头文件吧?是不是和windows.h有冲突?我用了一下,报错。 就算是二维数组,也要知道dest的大小的就按照楼主说的函数原型的话,dest需要在函数内部分配或者外部传进一个足够大的区域来存放。说实话,最讨厌字符串的指针的指针使用,实际开发中,我都尽量避免,没事不给自己找麻烦,说不定出个错,追issue要追个几小时 MFC扩展dll 凤矶 怎么样判断在打开文件对话框中是选择了打开还是取消 一个字符串,一个位图,我想把这两个东西合在一起,放在一个cimagelist对象里,怎么做 如何做出漂亮的软件?? 捕获应用程序发送文件的消息 如何在工具条上添加快捷键啊? 现在用ado在数据库里查询的时候界面总是死掉一样, 帮我看看这个出错提示框是怎么回事(我是初学者) 在局域网中,如何编程识别网络设备,如:主机、交换机、路由器等? 网络通信延迟大,怎么解决!! 急!!!! ComboBox_和ComboBox有什么区别以及具体应用有什么区别?(讲详细一点) 关于win98多线程中分配内存的问题
可能我表达错了,就是想把一个字符串按指定的字符分割返回。但是又要注意线程安全和不能用MFC的类库
在delphi就是var s array of string;
然后setlength(s, 20);
这样就会有个动态的字符串数组了
可以这样使用 s[0]:= 'aaa';
s[1]:= 'bbb';s[n]:= '...';
{
if(src[i] == ' ')
{
++j;
k=0;
}
else
{
dest[j][k] = src[i]
++k;
}
++i;
}
随便写的 尽供参考。。
void SplitString(CString str, char split,CStringArray& strGet)
{
//str为待分割的CString,split为分割符如:, ¦或空格 strGet为输出参数,你得到的字符串存放在strGet中
int pos = -1;
pos = str.Find(split);
while(pos != -1)
{
CString strSun = "";
strSun = str.Left(pos);
strGet.Add(strSun);
str.Delete(0,pos);
pos = str.Find(split);
}
if(str != "")
{//最后剩下的字符串可能没有split这个标示,看你需要怎么处理了
//这里也把他加入到strGet中
strGet.Add(str);
}
}
假设你的输出函数是void PrintStr(CString str);
CString str = "sssdf sfds jieuri lj122 98098";
CStringArray strArray;
strArray.RemoveAll();
SplitString(str,' ',strGet);
int count = strGet.GetSize();
for(int i=0;i <count;i++)
{
PrintStr(strGet[i]);
} 不知是否符合你的要求,供参考!
也可以参考http://topic.csdn.net/u/20080905/00/e87184ed-b6de-47b1-a6c7-d448d8e10ef2.html
和你提了类似的问题。
就按照楼主说的函数原型的话,dest需要在函数内部分配或者外部传进一个足够大的区域来存放。说实话,最讨厌字符串的指针的指针使用,
实际开发中,我都尽量避免,没事不给自己找麻烦,说不定出个错,追issue要追个几小时