C ++文件在第一行后停止读取

时间:2013-07-29 17:04:58

标签: c++ string sockets plist ifstream

我正在尝试通过套接字发送plist文件的内容。 userPlistifstream,文件正确打开,应该如此。但是当它运行时它只会在套接字上发送bplist00?然后停止。那为什么会这样?这是我的源代码:

if (userPlist.is_open()) {
    string line;
    int i;
    int sizeOfPlist;
    char plistChar[128];
    while (getline(userPlist, line)) {                    
        sizeOfPlist = line.size();
        for (i = 0; i <= sizeOfPlist; i++)
        {
            plistChar[i] = line[i];
        }
        line = "\0";
        send(sock, plistChar, strlen(plistChar), 0);
        for (i = 0; i < 128; i++) {
            plistChar[i] = '\0';
        }
        send(sock, "\n", strlen("\n"), 0);
    }
}

如果有人有任何建议或意见,那就太棒了。 感谢。

2 个答案:

答案 0 :(得分:1)

建议:如果你的文件在第一行之后停止读取,那么我的猜测是你的while循环是一个问题 - 你检查过while循环是否执行了多次?在调试器中使用断点来执行此操作。我认为getline()不是有效的条件检查,但值得检查

答案 1 :(得分:1)

  1. 您的for循环正在执行额外的时间,因为您使用的是<=而不是<

    for (i = 0; i <= sizeOfPlist; i++)
    //            ^^
    
  2. pListChar在您将其发送到套接字时不会以空值终止。你需要这一行:

    pListChar[sizeOfPlist] = '\0';
    
    send(sock, plistChar, strlen(plistChar), 0);
    

    您也不需要line = "\0";