输出拼接版本的输入

时间:2011-04-07 23:55:06

标签: c++

#include <iostream>
#include <string>

using namespace std;

int main()
{
  char name[256];
  cout << "Enter your name: ";
  cin.getline (name,256);

  for(int i = 0; i < 50; i++)
  {  
    cout << name[i];

    if (name[i] == '\n')
      break;
  }

  cout << endl;
  return(0);
}

输入您的姓名:我的名字是Sean

一旦我这样做,它输出“我的名字是肖恩”,但之后是一堆无意义的疯狂符号。

为什么在肖恩'n'之后不停止?因为那里有'\ n'字符。或者至少我会想。

所有,我想要的是一次输出名称中一个符号的每个字符,当它到达行尾时停止,这样当数组实际上小得多时它不必转到256 / p>

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:3)

cin.getline从输入缓冲区中读取换行符(或指定为delmiter的任何内容),但不将其包含在生成的字符串中,因此您正在读取数据的末尾。读取,直到遇到恰好包含与换行符对应的值的下一个字节(通常为10)。

将它们全部写在一起要容易得多:cout << name;

答案 1 :(得分:0)

来自文档:

  

提取字符直到   (n - 1)个字符已被提取   或找到分隔字符   (如果此参数为,则为delim   指定,否则为“\ n”。该   如果结束,提取也会停止   在输入序列中到达文件   或者如果在输入过程中发生错误   操作

     

如果找到分隔符,则为   提取和丢弃,即它是   没有存储和下一个输入   操作将在它之后开始。如果你   不要这个角色   提取后,你可以使用成员获取   代替。