C#でコンソールまたはファイルでユーザーからの入力を簡単に取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/816726

  •  03-07-2019
  •  | 
  •  

質問

私は C++ ユーザーで、現在 C# を使用しようとしています。

C++ では、ユーザーからの入力を受け取るのは楽しく (>> だけ)、すべての型をサポートしていました。ファイルも同様でした。ただし、C# では文字列しか取得できないため、複雑すぎます。次に、後で使用するためにそれを操作する必要があります。

また、複数の入力を同じ行内で空白で区切って取得したい場合は、文字列を分割する必要があるため、より複雑になります。それから変換...

エラー処理と安全なコードのためかもしれません。しかし、私はとにかく C# に失望しています。

ここにいる皆さんは専門家です。何か簡単な方法はありますか?

役に立ちましたか?

解決

私の知る限り、それは大変な方法で行わなければなりません。(ただし、明るい面としては、難しい方法は C++ よりも簡単です ;))

Console.OpenStandardInput() は入力ストリームを提供するため、ファイルと同じように扱うことができますが、必要に応じて文字列の分割を自分で行う必要があります。もちろん、C# には、ここで役立つ優れた Regex ライブラリがあります。

T.TryParse (T は int、float、読みたい型のいずれか) を使用すると、文字列をそれらの型に変換できます。

他のヒント

最終的には、ラップするのにそれほど時間はかかりません。現在の行をバッファリングし、希望する形式で入力を読み取るだけです。しかし、IMO、小さな分割/ TryParseなどはめったに痛いことはありません。

>>が受け入れると予想される形式について100%確信はありませんが、同様のことを行うのは難しいと思います。しかし、私はそれを書くことを志願していません;-p

既に回答したように、C#はこれをサポートしていません。 <!> lt; <!> lt;のオーバーロードなしまたは<!> gt; <!> gt;ストリームの場合、およびTextWriter.WriteLine(<!> quot; <!> quot;、...)が存在する間は、可変パラメーターリストを持つ対応するTextReader.ReadLine()はありません。

なぜを推測します:dat cinが理解している空白で区切られたデータ形式は、もはやあまり使用されないということです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top