2013-07-15 40 views
0

我在字符指针变量中有一个值,并且该值是动态更改的。从char *变量解析文件名

为e.g

one case: 
    char *ptr = sometext || abc.txt; 

second case: 
    char *ptr = abc.txt || sometext; 

我在另一个变量只需要文件名。 海峡=的abc.txt

目前我使用的代码:

CString str; 
char* lpszToToken = stLine.GetBuffer(stLine.GetLength()); 
char* lpszToken = strtok(lpszToToken, "|"); 
while(lpszToken != NULL) 
{ 
    lpszToken = strtok(NULL, "|"); 
    str = lpszToken; 
} 

,但它仅在第一种情况下工作: 我需要一个genric码在两个案件 任何想法运行? 谢谢,

回答

0

我的C是生锈的,但为什么不喜欢:

char* fname = strtok(fileNames, "|"); 
while (fname != NULL) { 
    // do something with the file here.. 
    processFile(fname);    
    fname = strtok(NULL, "|");   // next. 
} 

此外,匈牙利命名法是编制一个可怕的方式。它有效地掩盖了大多数含义的混淆,使得不透明和简单的问题变得不透明。看看我的例子与你提供的gack相比有多可读?

你的导师(和Petzold)非常不幸地被误认为是在教你这个。我建议写“识字”代码。

参见:

+0

请千万不要用'strtok'。 .. –

+0

@ sasha.sochka请为此类一般性陈述提供理由/链接。 – arne

+1

如果我的意见是在某个地方计算,我会投票表示'strtok'是迄今为止设计的功能最差的(C) –

0

既然你有可用的CString,你可以使用的CString ::查找或CString的::记号化