#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 ++ Stringscin.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
insteead char
массивы как легко и безопасно реализовать
У меня также была та же проблема с использованием указанных ответов, потому что я не знал, что мой файл был закодирован в 16 битах. Поэтому мне пришлось использовать std :: wstring (и std :: wifstream).