我正在尝试从cin获取字符串,然后将其写入二进制文件。我读到纯字符串无法正常工作,所以尝试将其转换为char*。
该段落无需翻译。
以下代码可以正常写入(...可能),但只有前8个字符,因此文件输出是不完整的。
std::string nick, ip, port;
std::cout << "IP: ";
std::cin >> ip;
std::cout << "port: ";
std::cin >> port;
ofstream file1("lastServers.bin", ios::out | ios::binary);
if (file1.good())
{
const char* p_IP = ip.c_str();
const char* p_PORT = port.c_str();
int length = sizeof(&p_IP)+sizeof(&p_PORT);
char* tmp1 = new char[length];
int index = 0;
memcpy((tmp1 + index), p_IP, sizeof(&p_IP));
index = index + sizeof(&p_IP);
memcpy((tmp1 + index), p_PORT, sizeof(&p_PORT));
file1.write(tmp1, length);
file1.close();
delete[] tmp1;
}
else
{
std::cout << "file error write" << endl;
}
感谢您提前的任何帮助 :)
该段落无需翻译。
file << ip << port << nick;
不能完成吗?因为这似乎是你在这里尝试构建的内容。 - Wintermutesizeof(&p_IP)
和sizeof(&p_PORT)
是指针的大小,可能是8。 - molbdnilofile1.good()
的结果在这里没有很好地定义。您需要使用file1.is_open()
或! file1.fail()
,或者只使用file1
。 - James Kanze