Я пытаюсь отправить содержимое файла plist через сокет. userPlist
- это ifstream
, и файл открывается правильно и как следует. Но когда он запускается, он только отправляет bplist00?
через сокет, а затем останавливается. Почему это так? Вот мой исходный код:Файл C++ останавливает чтение после первой строки
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);
}
}
Если у кого-то есть предложения или советы, это было бы здорово. Спасибо.
strlen (plistChar) - где заканчивается нулевой отказ от первого раза? –
@MartinJames Извините, я не знаю, что вы имеете в виду. – jamespick
В C строки должны быть завершены '\ 0'. Вы используете функцию C для строк, strlen(). Он посчитает, сколько символов он найдет, прежде чем нажать «\ 0». Вы никогда не кладете '\ 0' в свою строку C (plistChar), поэтому могут возникать всевозможные плохие вещи. Также вы индексируете строку C++ один за другим из-за условия завершения цикла. Он может иметь «\ 0» по чистой удаче, но это также неопределенное поведение. – DanielKO