0

我正在尝试通过套接字发送 plist 文件的内容。userPlist是 aifstream并且文件正确打开并且应该正确打开。但是当它运行时,它只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);
    }
}

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

4

2 回答 2

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

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

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

    你也不需要line = "\0";.

于 2014-01-09T16:40:21.587 回答
1

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

于 2013-07-29T17:19:53.683 回答