读缓冲C++

Kar*_*ary 3 c++

我正在尝试在C++中读取一个字符的缓冲区,直到'\n',并使用do-while循环使用这些字符初始化char数组.我知道我可以使用cin.getline(),但我想自己尝试一下.

int main()
{
    char buffer [1024];
    int index = 0;
    char temp;

    do 
    {
        cin.get( temp );
        buffer [ index ] = temp;
        index ++;
    }
    while ( temp != '\n' );

    cout << buffer << endl;

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

它给了我不正确的结果 - 通过几行squre括号与其他怪异符号混合的正确文本休止.

Gai*_*aim 5

首先,在整个文本之后,你必须追加'\0'为字符串的结尾

它看起来应该是buffer[ index ] = 0;因为你应该重写\n你追加的角色.

当然,还有其他一些你应该检查的东西,但它们不是你的主要问题

  • 因为缓冲区有限,所以输入的长度 - 最大长度为1023 +空字节
  • 标准输入结束 cin.eof()