本文整理汇总了C++中Argv::clear方法的典型用法代码示例。如果您正苦于以下问题:C++ Argv::clear方法的具体用法?C++ Argv::clear怎么用?C++ Argv::clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Argv
的用法示例。
在下文中一共展示了Argv::clear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: responseFileToArgumentList
bool CompilerInterface::responseFileToArgumentList (const std::string& rsp_file,Argv &args) const
{
FUNCTION_TRACE;
bool res=false;
args.clear();
FILE *f=fopen(rsp_file.c_str(),"r");
if (f)
{
int sz;
std::string text;
char tmp[CHAINE_LEN*16];
text.clear();
while ( (sz=fread(tmp,sizeof(char),CHAINE_LEN*16,f)) > 0)
text+=std::string(tmp,sz);
fclose(f);
if (!text.empty())
{
std::string rsptext;
switch (text_encoding(text))
{
case ENC_UTF16:
{ // Windows .NET 2005 workaround
DEBUG1("UTF16 Response file\n");
wchar_t tmp[CHAINE_LEN];
wchar_t *textws=NULL;
int sz;
int tmp_sz=0;
char *text=NULL;
f=fopen(rsp_file.c_str(),"rb");
if (f==NULL) return false;
while ( (sz=fread(tmp,sizeof(wchar_t),CHAINE_LEN,f)) > 0)
{
textws=(wchar_t *)REALLOC(textws,sizeof(wchar_t)*(sz+tmp_sz));
memcpy(&textws[tmp_sz],tmp,sz*sizeof(wchar_t));
tmp_sz+=sz;
}
fclose(f);
text=(char*)MALLOC(sizeof(char)*(tmp_sz+1+CHAINE_LEN));
memset(text,0,tmp_sz+1);
int offset=0;
while (textws[offset]==0xFEFF)
offset++;
DEBUG2("offset=%i\n",offset);
wcstombs(text,&textws[offset],tmp_sz-offset);
text[tmp_sz-offset]='\0';
DEBUG2("Response file contain:%s\n",text);
#if LOG
for (int i=0;i<tmp_sz;i++)
{
DEBUG5("textws[%i]=%4.4X text[%i]=%c\n",i,textws[i],i,text[i]);
}
#endif
FREE(textws);
rsptext=std::string(text);
FREE(text);
}
break;
case ENC_UTF8:
DEBUG1("UTF8 Response file\n");
rsptext=utf16_to_ascii(utf8_to_utf16(text));
break;
case ENC_ASCII:
DEBUG1("ASCII Response file\n");
rsptext=text;
break;
}
rsptext=ascii_correct_eol(rsptext);
if (!rsptext.empty())
{
DEBUG2("Response file contain:%s\n",rsptext.c_str());
rsptext+="\n"; // add a separator at the end to simplify the process
res=responseFileContainsToArgumentList(rsptext,args);
}
}
}
return res;
}