当前位置: 首页>>代码示例>>C++>>正文


C++ Argv::clear方法代码示例

本文整理汇总了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;
}
开发者ID:testcocoon,项目名称:testcocoon,代码行数:82,代码来源:compilerinterface.cpp


注:本文中的Argv::clear方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。