#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 个字符,我会得到垃圾值。为什么会这样?
你没有初始化你的数组:
#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>
因此,它定义的函数在您的代码中使用:clscr()
和getch()
.<string>
库和std::string
. 在此处阅读有关此内容的更多信息:C-String 与 C++Strings 的效率cin.getline()
,但我不知道你的最终目标,所以我不能对此发表充分评论。但是,您似乎正在尝试进行缓冲输入。一种简单而干净的方法
#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
insteeadchar
数组,因为它易于实现且安全
使用指定的答案我也遇到了同样的问题,因为我没有意识到我的文件是用 16 位编码的。所以我不得不使用std::wstring(和std::wifstream)。