📄 subject_66527.htm
字号:
<p>
序号:66527 发表者:xiaogang_2000 发表日期:2003-12-25 09:16:35
<br>主题:怎样对字符串进行如下操作?
<br>内容:<BR>有这样一个字符串:<BR>CString str="a_bcd,a234h,aDFJ+K23,...";(长度不定!)<BR>希望将其分解为:<BR>CString str1="a_bcd";<BR>CString str2="a234h";<BR>CString str3="aDFJ+K23";<BR>CString str4="....";<BR>... (以后可能还有多项)<BR>不知程序该如何写?请大家帮忙看看,多多指点。谢谢<BR>mc_77@sina.com<BR>QQ:56700320
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:福尔默斯 回复日期:2003-12-25 09:23:56
<br>内容:strcat(str1,str2)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yanzheng 回复日期:2003-12-25 09:43:01
<br>内容: CString LinkDB="'192.168.0.1';'sa';'ati1234','rams1bj..";<BR> CString stir,stiru,strServerName,strLogin,strPassWord,strDataBase;<BR> strServerName=LinkDB.Mid(1,LinkDB.Find(';')-2);<BR> stiru=strServerName;<BR> LinkDB.Delete(0,LinkDB.Find(';')+2);<BR> strLogin=LinkDB.Mid(0,LinkDB.Find(';')-1);<BR> LinkDB.Delete(0,LinkDB.Find(';')+2);<BR> strPassWord=LinkDB.Mid(0,LinkDB.Find(',')-1);<BR> LinkDB.Delete(0,LinkDB.Find(',')+2);<BR> strDataBase=LinkDB.Mid(0,LinkDB.Find('.'));<BR> stiru=strServerName+strDataBase+strLogin+strPassWord;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:林建华 回复日期:2003-12-25 10:27:04
<br>内容:你的要求没办法得到,因为c 语言无法自动申请n个变量(n不确定),如果用字符串数组倒是可以实现<BR>CString str[20];
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yanzheng 回复日期:2003-12-25 10:50:09
<br>内容:用动态数组就行<BR>typedef CArray<CString,CString&> CRectArray;<BR> CRectArray m_Array;<BR> m_Array.SetSize(0);<BR> m_Array.SetSize(m_Array.GetSize()+1);<BR> m_Array[m_Array.GetSize()-1]=str;<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiaogang_2000 回复日期:2003-12-26 10:17:58
<br>内容:还有更好的办法吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:徐相华 回复日期:2003-12-26 13:25:06
<br>内容:动态数组是最好的方法。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiaogang_2000 回复日期:2003-12-26 16:47:49
<br>内容:回yanzheng :<BR> 你的用动态数组的方法好像是将各个短字符串存入数组中。我希望的是如何将它们分开。(不知我理解的对不对)<BR> 你能给我写个小例子吗?谢谢你
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:alang 回复日期:2003-12-26 17:24:55
<br>内容:void CCTestCStringDlgDlg::OnOK() <BR>{<BR> // TODO: Add extra validation here<BR> CString str="123,4567,89abcd";<BR> CString str2;<BR> str2 = GetItemCString( 0, str );<BR> MessageBox( str2 ); //"123"<BR><BR> str2 = GetItemCString( 2, str );<BR> MessageBox( str2 ); //"89abcd"<BR><BR> str2 = GetItemCString( 6, str );//超越范围<BR> MessageBox( str2 ); //"NULL"<BR><BR>// CDialog::OnOK();<BR>}<BR><BR>////// nItem 为你想提取的位置<BR>CString CCTestCStringDlgDlg::GetItemCString(int nItem, const CString& strString)<BR>{<BR> int iStart = 0;<BR> int nNum = 0;<BR> int nLen = strString.GetLength();<BR><BR> for( ;; )<BR> {<BR> const int iComma = strString.Find( _T(','), iStart );<BR><BR> if( iComma == -1 )<BR> break;<BR><BR> if( nItem == nNum++ )<BR> return strString.Mid( iStart, iComma - iStart );<BR><BR> iStart = iComma + 1;<BR><BR> }<BR> <BR> if( nItem == nNum ) <BR> return strString.Mid( iStart, nLen );<BR><BR> else<BR> return "NULL";//nItem超出范围就返回"NULL"<BR>}<BR>这个也许对你有用!!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:hwj 回复日期:2003-12-26 17:50:29
<br>内容:用strtok函数是,下面是例子:<BR>#include <string.h><BR>#include <stdio.h><BR><BR>char string[] = "A string\tof ,,tokens\nand some more tokens";<BR>char seps[] = " ,\t\n";<BR>char *token;<BR><BR>void main( void )<BR>{<BR> printf( "%s\n\nTokens:\n", string );<BR> /* Establish string and get the first token: */<BR> token = strtok( string, seps );<BR> while( token != NULL )<BR> {<BR> /* While there are tokens in "string" */<BR> printf( " %s\n", token );<BR> /* Get next token: */<BR> token = strtok( NULL, seps );<BR> }<BR>}<BR><BR><BR>Output<BR><BR>A string of ,,tokens<BR>and some more tokens<BR><BR>Tokens:<BR> A<BR> string<BR> of<BR> tokens<BR> and<BR> some<BR> more<BR> tokens<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:hwj 回复日期:2003-12-26 17:59:04
<br>内容:补充说明一下strtok函数的好处,strtok可以自己指定分隔符(不管是,空格或其他),代码也比较简洁,具体可以参考MSDN上的说明
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:xiaogang_2000 回复日期:2003-12-27 23:22:38
<br>内容:感谢大家的帮忙!<BR>大家说的办法我都试过了,都是对的。我用的是hwj的办法,我将分给了他
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -