求拆分字符串的函数 例如:abc$中国$12345$,。‘ 用$号拆分,急,帮忙!

火电 2005-11-14 04:16:53
如题


注意:应考虑中英文、数字、符号组合的情况
...全文
272 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon_wei 2005-11-14
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4383/4383809.xml?temp=.6852381
bobob 2005-11-14
  • 打赏
  • 举报
回复
先用sscanf提取第一个$前的段,然后再提取第二个
使用如下语法:sscanf(str,"%[^$]$%s",a1,a2);
laofang 2005-11-14
  • 打赏
  • 举报
回复
推荐M$提供的内部函数:AfxExtractSubString :)

$个数不定如何循环呀?先Find一下看有没有,再来scanf ?
火电 2005-11-14
  • 打赏
  • 举报
回复
顺便问一句就结贴, 38062708(一个人始终不快乐) 的自己写的函数

与sscanf()函数效率方面哪个高些???
T97102003 2005-11-14
  • 打赏
  • 举报
回复
CString str = "abc$中国$12345$,。‘ ";
CStringArray szArray;
CString szTemp;

int i=0;
while(AfxExtractSubString( szTemp, str, i++, '$'))
{
szArray.Add(szTemp);
}
火电 2005-11-14
  • 打赏
  • 举报
回复
多谢各位!!!
菜牛 2005-11-14
  • 打赏
  • 举报
回复
CStringT::Tokenize

CStringT Tokenize(
PCXSTR pszTokens,
int& iStart
) const;


Parameters
pszTokens
A string containing token separators.
iStart
The zero-based index to begin the search.
Return Value
A CThisString object containing the current token value.
Remarks
Call this function to search for tokens in the given string. The pszTokens is a string containing the token separators. Parsing of the target string begins at the iStart position.
Example
The following example demonstrates the use of CStringT::Tokenize.
//typedef CStringT< TCHAR, StrTraitATL< TCHAR > > CAtlString;
CAtlString str( "%First Second#Third" );
CAtlString resToken;
int curPos= 0;

resToken= str.Tokenize("% #",curPos);
while (resToken != "")
{
printf("Resulting token: %s\n", resToken);
resToken= str.Tokenize("% #",curPos);
};
Output
Resulting Token: First
Resulting Token: Second
Resulting Token: Third
bobob 2005-11-14
  • 打赏
  • 举报
回复
如果$的个数不定的话也可以用sscanf循环处理
38062708 2005-11-14
  • 打赏
  • 举报
回复
void GetStrsFromStr(CString str,CString maskstr,CStringArray &ary)
{
ary.RemoveAll();

int indextemp,indexfront;
CString strtemp;

indextemp = 0;
indexfront = 0;

while(1)
{
indextemp = str.Find(maskstr,indexfront);
if (indextemp == -1)
indextemp = str.GetLength();

strtemp = str.Mid(indexfront,indextemp-indexfront);
ary.Add(strtemp);
indexfront = indextemp + 1;
if (indexfront >= str.GetLength())
break;
}
}
CStringArray ary;
GetStrsFromStr(str,"$",ary);
火电 2005-11-14
  • 打赏
  • 举报
回复
感谢!还有其他方法吗?
中级伴读 2005-11-14
  • 打赏
  • 举报
回复
楼上倒是简单
bobob 2005-11-14
  • 打赏
  • 举报
回复
CString str = "abc$中国$12345$,。‘ ";
char a1[8],a2[8],a3[8],a4[8];
sscanf(str,"%[^$]$%[^$]$%[^$]$%[^&]",a1,a2,a3,a4);
AfxMessageBox(str);
AfxMessageBox(a1);
AfxMessageBox(a2);
AfxMessageBox(a3);
AfxMessageBox(a4);

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧