#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
代わりに配列を使用しますchar
ファイルが 16 ビットでエンコードされていることに気づかなかったため、指定された回答を使用しても同じ問題が発生しました。そのため、std::wstring (および std::wifstream) を使用する必要がありました。