строка — C ++ файл перестает читать после первой строки

Я пытаюсь отправить содержимое файла plist через сокет. userPlist это ifstream и файл открывается правильно и как надо. Но когда он запускается, он только отправляет 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);
}
}

Если у кого-то есть какие-либо предложения или советы, это было бы здорово.
Благодарю.

0

Решение

Предложение: Если ваш файл перестает читать после первой строки, то я предполагаю, что это проблема вашего цикла while. Вы проверили, выполняется ли цикл while более одного раза? Для этого используйте точки останова в отладчике. Я не думаю, что getline () является действительной условной проверкой, но стоит проверить

1

Другие решения

  1. Ваш цикл for выполняет дополнительное время, потому что вы используете <= вместо <:

    for (i = 0; i <= sizeOfPlist; i++)
    //            ^^
    
  2. pListChar не завершается нулем к тому времени, когда вы отправляете его в сокет. Вам нужна эта строка:

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

    Вам также не нужно line = "\0";,

1

По вопросам рекламы [email protected]