我試圖通過套接字發送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) - 終止null從哪裏來的第一次? –
@MartinJames對不起,我不知道你的意思。 – jamespick
在C中,字符串必須以'\ 0'結尾。你對字符串strlen()使用C函數。它將計算它在找到'\ 0'之前找到的字符數。你永遠不會在你的C字符串(plistChar)中放入一個'\ 0',所以各種不好的東西都可能發生。另外,由於您的循環終止條件,您正在爲一個C++字符串編制索引。它可能純粹運氣有'\ 0',但它也是未定義的行爲。 – DanielKO