流,字符和换行符

时间:2014-11-30 01:59:59

标签: c++ newline ostream

我有类似的东西

const char* a = "a\nb";
std::ostream data;

我需要将“a”读成“数据”。我尝试使用

data_stream << data;

但是在行结束处停止,因此仅复制“a”。接下来我试了

while (data[0] != '\0')
{
    data_stream << data;
}

但是这不会从char中删除该行,因此它是无限循环。这样做的正确方法是什么?

2 个答案:

答案 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 *

中的每一行