gpt4 book ai didi

c++ - getline 的垃圾值

转载 作者:行者123 更新时间:2023-11-28 07:28:48 25 4
gpt4 key购买 nike

#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;
}

还有:

  • iostream.h已经过时了。
  • 如果您的目标是跨平台开发,请避免:<conio.h>因此,functions it defines在您的代码中使用:clscr()getch() .
  • 尽可能避免使用 C 字符串。你正在使用 C++,使用:<string>图书馆和std::string .在这里阅读更多相关信息:Efficiency of C-String vs C++Strings
  • 可以对缓冲输入进行类似的论证,使用cin.getline() ,但我不知道你的最终目标,所以我不能对此发表充分的评论。但是,您似乎确实在尝试进行缓冲输入。

关于c++ - getline 的垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com