C++ 流、字符和换行符

C++ 流、字符和换行符,c++,newline,ostream,C++,Newline,Ostream,我有一些类似的东西 const char* a = "a\nb"; std::ostream data; 我需要读取一个数据。我试着用 data_stream << data; 但这会在行尾停止,因此只复制一个。接下来我试着 while (data[0] != '\0') { data_stream << data; } 但是,这不会从char中删除行,因此这是一个无止境的循环。正确的方法是什么?如何准确地检查是否只复制了一个?您是否可以为此类检查提供代码和

我有一些类似的东西

const char* a = "a\nb";
std::ostream data;
我需要读取一个数据。我试着用

data_stream << data;
但这会在行尾停止,因此只复制一个。接下来我试着

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

但是,这不会从char中删除行,因此这是一个无止境的循环。正确的方法是什么?

如何准确地检查是否只复制了一个?您是否可以为此类检查提供代码和输出。原因是,不应该发生这种情况:即使在刷新流之后,它仍然应该接受示例中的以下符号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
}

当然,正如Captain Unforsive所指出的,您需要在第二个代码段中正确地获取名称。

使用getline获取字符中的每一行*

将数据发送到数据流中。如果要将数据放入数据使用数据,换行符不会阻止流读取整个字符串。它将一直读到字符串的末尾。您是否尝试一直读到输出流中的换行符?那么我下面的回答是否有用?如果是,你能接受吗?