字符串中的垃圾打印转换为Streambuffer

时间:2014-12-19 16:00:22

标签: c++ garbage

我正在使用Boost :: Asio库制作C ++ Client / Server TCP的模拟器。

以下是我的代码的一部分:

客户端:

std::string option;
std::getline(std::cin, option);
option.push_back('\r');
option.push_back('\n');
boost::asio::write(client_socket, boost::asio::buffer(option));

服务器:

boost::asio::streambuf received;
boost::asio::read_until(socket, received, "\r\n");
char number[7];
recieved.sgetn(number, 7);
std::cout << "The entered number is: " << number << std::endl;

(我只包含有问题的代码)

我的问题是char[] number中包含垃圾值,输入1234567就像这样:

enter image description here

如何解决此问题?

2 个答案:

答案 0 :(得分:6)

你必须null终止你的字符串,这不是由你完成的。

char number[7]; //you need additional allocation for '\0'

使用

char number[8];

答案 1 :(得分:1)

char number[8];

recieved.sgetn(number, 7);

number[7] = '\0'