通过C++来自动配置Host文件来访问域名来学习C++如何读取和修改文件

jackxiang 2010-12-24 19:18 | |

#include <iostream>
#include <fstream>
using namespace std;
#ifdef WIN32
#define TEST_FILE "C:\\WINDOWS\\system32\\drivers\\etc\\hosts"
#else
#define TEST_FILE "/etc/hosts"
#endif
char *flagstr = "discuz.addev.com";
int needModify = 1;
const char buf[] = "172.25.38.70    discuz.addev.com";
void checkHostExist()
{
  ifstream fin(TEST_FILE);
  string str;
  while(getline(fin,str))
  {
  char *pos = strstr(str.c_str(),flagstr);  
  if (pos != NULL)
  {
    //检查是否包好 #
     char *poscheck = strstr(str.c_str(),"#");
    if (poscheck == NULL) //没有#
    {    
      needModify = 0;//没有#号就不需要添加
      break;
    }
  }
}


}

void test()
{
  ofstream ofs(TEST_FILE,ios_base::app);
  cout << TEST_FILE;
  char ch = '\n';
  ofs.put(ch);//simple
  ofs.write(buf, sizeof(buf));
  ofs.close();
}
int main(int argc, char* argv[])
{
  checkHostExist();
  if(1 == needModify)
  {
    test();  //需要加入host,添加进入,否则不用添加,直接打开浏览器
  }
  //浏览器直接打开
  system("\"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE\" http://discuz.addev.com");
  return 0;
}



最后,在Linux编译时 出现致命错误 iostream 没有那个文件或目录 编译中断。
你是用g++编译的吗?iostream是c++的头文件,需要使用g++指令而不是gcc。
如果有其他问题请追问,注意要用g++才行,否则会报错错误:iostream:没有那个文件或目录。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/3898/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-6-13 17:24
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]