我需要在客户端请求时通过套接字连接发送txt文件。问题是我无法想象如何从二进制格式转换为ASCII。使用此代码,客户端只接收垃圾字符。
ifstream file;
char output [logfilesize];
file.open( "log.txt" );
file >> output;
send(socket, output, sizeof(output), 0);
cout << output << endl;
file.close
很抱歉,如果问题被多次询问,但在阅读完所有帖子后,我无法想出如何使其发挥作用。
感谢的!
编辑:工作代码!
int lenght;
char * logf;
ifstream file;
file.open("log.txt");
file.seekg(0, ios::end);
lenght = file.tellg();
file.seekg(0, ios::beg);
logf = new char [lenght];
file.read(logf, lenght);
file.close();
cout.write (logf, lenght);
send(soc,logf , lenght, 0);
delete[] logf;
答案 0 :(得分:2)
此sizeof(output)
将返回您声明的原始数组的大小,而不是您通过stream运算符读取的字符数。如果您知道文件是文本(即您想要读取单个分隔的字符串),则只能使用文件流中的stream in运算符。否则,您应该通过read()
调用从流中读取所需的字节数。如果是字符串,则使用strlen()
函数确定字符串的长度(注意:这对二进制数据不起作用)。