我有类似的东西
const char* a = "a\nb";
std::ostream data;
我需要将“a”读成“数据”。我尝试使用
data_stream << data;
但是在行结束处停止,因此仅复制“a”。接下来我试了
while (data[0] != '\0')
{
data_stream << data;
}
但是这不会从char中删除该行,因此它是无限循环。这样做的正确方法是什么?
答案 0 :(得分:0)
您究竟如何检查只复制了“a”?你能为这种检查提供代码和输出吗?原因是,它不应该发生:即使在“\ n”上刷新流,它仍应接受以下符号(在您的示例中为“b”)。
你的循环确实是无限的,因为你每次都要检查第一个符号,而且它自然总是不是'\ 0'(因为它是'a')。你可能打算做的是:
dp * char = data; // creating pointer to char array
while (*dp) // until the end of line is reached (at which point *dp evaluates to '/0' which is interpreted as false)
{
data_stream << *dp++; // outputting the char and moving pointer to the next one in array
}
当然,正如Oblivious船长所指出的那样,你需要在你的第二个代码中找到正确的名字。
答案 1 :(得分:0)
使用getline()
获取char *