#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
char c[50];
//cin>>c;
cin.getline(c,50);
//cout.write(c,50);
cout<<c;
getch();
}
如果输入少于50个字符的内容,我会得到垃圾值。为什么会这样?
答案 0 :(得分:1)
您没有初始化数组:
#include<iostream>
#include<conio.h>
using std::cout;
using std::cin;
int main()
{
clrscr();
char c[50] = {};//initialize your array here!
cin.getline(c,50);
cout<<c;
getch();
return 0;
}
此外:
<conio.h>
,因此代码中使用functions it defines:clscr()
和getch()
。<string>
库和std::string
。在此处详细了解:Efficiency of C-String vs C++Strings cin.getline()
可以对缓冲输入进行类似的论证,但我不知道你的最终目标,所以我无法对此作出充分的评论。但是,它似乎正在尝试进行缓冲输入。 答案 1 :(得分:0)
一种简单而干净的方法
#include<iostream>
#include<string>
int main()
{
std::string str;
getline(std::cin, str);
cout<<str;
std::cin.get(); //or std::cin.ignore();
}
需要注意的一些要点:
新标准指定main()的返回类型应为int
而不是void
。(不返回任何默认值为int
返回)
即使getchar()
已过时。
使用std::string
insteead char
数组,因为它易于安全实施
答案 2 :(得分:0)
我使用指定的答案也遇到了同样的问题,因为我没有意识到我的文件是以16位编码的。所以我不得不使用std :: wstring(和std :: wifstream)。