字符串拆分的问题????????

Novelty 2001-12-17 03:09:26
CString m_str="filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n"
希望根据字符串的规则拆分出以下的三个变量:
CString m_filename1="a.txt";
CString m_filename2="b.txt";
CString m_filename3="c.txt";
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingfish 2001-12-17
  • 打赏
  • 举报
回复
CString m_str="filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n";
char *p = (LPSTR)(LPCSTR) m_str;
char buf[256];
strcpy(buf,p);

CString m_filename1= strstr(strtok(buf,"\r\n"),":")+1;
p = p+strlen(buf)+2;
strcpy(buf,p);

CString m_filename2= strstr(strtok(buf,"\r\n"),":")+1;
p = p+strlen(buf)+2;
strcpy(buf,p);

CString m_filename3= strstr(strtok(buf,"\r\n"),":")+1;
iamfancy 2001-12-17
  • 打赏
  • 举报
回复
不好意思,写昏头了,写了一个 Java 的例子给你,在 C 里是用 strtok 函数的,在 string.h 里,这是 MSDN 上的一个例子

#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;

void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}
iamfancy 2001-12-17
  • 打赏
  • 举报
回复
不好意思,写昏头了,写了一个 Java 的例子给你,在 C 里是用 strtok 函数的,在 string.h 里,这是 MSDN 上的一个例子

#include <string.h>
#include <stdio.h>

char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;

void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}
iamfancy 2001-12-17
  • 打赏
  • 举报
回复
写个例子给你:
/**
* Test.java
* @author Fancy
*/

import java.util.*;

public class Test {

public static void main(String[] args) {
String s = "filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n";
StringTokenizer st = new StringTokenizer(s, "\r\n");
StringTokenizer sst;
String m_filename1 = null;
String m_filename2 = null;
String m_filename3 = null;
while (st.hasMoreTokens()) {
//String t = st.nextToken();
sst = new StringTokenizer(st.nextToken(), ":");
String t1 = sst.nextToken();
String t2 = sst.nextToken();
if (t1.equals("filename1")) {
m_filename1 = t2;
} else if (t1.equals("filename2")) {
m_filename2 = t2;
} else {
m_filename3 = t2;
}
}
System.out.println(m_filename1);
System.out.println(m_filename2);
System.out.println(m_filename3);
}

}
swordbroken 2001-12-17
  • 打赏
  • 举报
回复
int count = 0;
int len;
CString m_str = "filename1:a.txt\r\nfilename2:b.txt\r\nfilename3:c.txt\r\n";

CString filename[10];
int left = 0,right = 0;
for(int i = 0; i < m_str.GetLength(); i ++)
{
left = m_str.Find(':',right) + 1;
if(left < i)
break;
right = m_str.Find("\r",left);
len = right - left;
filename[count++] = m_str.Mid(left,len);
i = right;

}
iamfancy 2001-12-17
  • 打赏
  • 举报
回复
错了,应该是StringTokenizer
iamfancy 2001-12-17
  • 打赏
  • 举报
回复
多用两个 java.util.StreamTokenizer 拆一下就好
Novelty 2001-12-17
  • 打赏
  • 举报
回复
?

16,471

社区成员

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

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

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