【Linux C++读取配置文件】【砖】

读取指定路径下文件,并解析提取相关内容。

读取解析成功返回true,失败返回false。

bool Client::ReadFileConfig()
{
    char buffer[256];
    char strFilePath[] = "/usr/local/etc/socket.config";

    std::string strIP;
    int iPort;

    if(access(strFilePath, F_OK) !=0 )
    {
        printf("ERROR: config file not exist! Using default IP and Port! \n");
        return false;
    }

    std::ifstream fs;
    fs.open( strFilePath);
    if(!fs.is_open())
    {
        memset( buffer, 0, sizeof(buffer));
        sprintf(buffer, "Error: open config file failed! filePath=%s ", strFilePath);
        printf("%s \n",buffer);
        return false;
    }

    bool bFindIP = false;
    bool bFindPort = false;
    while( !fs.eof())
    {
        memset( buffer, 0, sizeof(buffer));
        fs.getline( buffer, sizeof( buffer));
        printf("%s \n", buffer);

        std::string strLine(buffer);
        // remove(strLine.begin(), strLine.end(), ' ');
        size_t nPos = strLine.find("=");

        std::string strKey = strLine.substr(0, nPos);
        std::string strValue = strLine.substr( nPos + 1);

        if(strKey == "IP")
        {
            strIP = strValue;
            bFindIP = true;
            printf("SocketIP=%s \n",strValue.c_str());
        }
        else if(strKey == "Port")
        {
            iPort = atoi(strValue.c_str());
            bFindPort = true;
            printf("SocketPort=%d \n",iPort);
        }
    }

    if(!bFindIP)
    {
        memset( buffer, 0, sizeof(buffer));
        sprintf(buffer, "Error: cannot find IP in config file(IP=xx.xx.xx.xx)! filePath=%s ", strFilePath);
        printf("%s \n",buffer);
        return false;
    }

    if(!bFindPort)
    {
        memset( buffer, 0, sizeof(buffer));
        sprintf(buffer, "Error: cannot find Port in config file(Port=XXXX)! filePath=%s ", strFilePath);
        printf("%s \n",buffer);
        return false;
    }

    return true;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值