問題タブ [istringstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::getline は \n、\r、および \r\n を処理します
テキスト ファイルからデータを読み込んでいますstd::getline
。これはデフォルトで改行文字まで読み取ります\n
。私のコードはこれに依存しています。
ただし、改行文字が\r
(Mac)、\n
(Unix)、または\r\n
(Windows)の場合など、さまざまな環境で生成される可能性のあるデータを処理する必要があることがわかりました。
次のようなことができるように簡単な修正はありますか
しかし、最初に探してから\r\n
、それ\r
を\n
生成した環境に関係なく「行」を返すようにしますか?
std::getline
または、より一般的に:一般的に使用される改行/改行の種類に対して「行」を返すために使用する方法はありますか?
現時点で私が思いついたのは
改行があると仮定すると、関連する区切り文字は最短の「行」を生成するという仮定に基づいています。また、区切り文字の場合、 と が同じ長さの文字列になる\r
という事実も考慮してください。\r\n
\r\n
c++ - 複数の区切り文字を持つ文字列ストリーム
これは、私が見つけることができるすべての例がベクトルを使用しており、教師がこのクラスでベクトルを使用することを許可しないため、答えが見つからないように見える別の質問です。
' '
(任意の数の) 空白スペースと (任意の数の) 文字以外の文字を区切り文字として使用して、一度に 1 語ずつ本のプレーン テキスト版を読む必要があります。そのため、任意の量のスペースまたは句読点で単語を区切る必要があります。空白を区切り文字として使用するだけでよい場合に、私が行った方法は次のとおりです。
編集: 読み込まれたテキストの例と、それをどのように分離する必要があるか。
「彼らが知っていたら;;あなたはそれを望んでいました、娯楽.
最初の行を分離する必要がある方法は次のとおりです。
もしも
彼ら
持っていました
知られている
あなた
欲しかった
それ
の
エンターテイメント
だろう
持ってる
テキストには、少なくともすべての標準句読点が含まれますが、省略記号、...
二重ダッシュ--
なども含まれます。
いつもありがとうございます。
編集:
では、2 番目の stringstream を使用すると、次のようになりますか?
header - istringstream を使用して文字列トークンの長さをカウントする
getline(tokenizer, " "); を含む「getline」の呼び出しに一致する関数がないというエラーが表示されます。これを修正する方法がわかりません。他のヘッダーをいくつか含めてみましたが、さらにエラーが発生し続けています。
c++ - 逆ポーランド記法計算機のヘルプが必要です
逆ポーランド記法計算機を作成するプログラムに取り組んでおり、誰かが私にヒントを与えることができるかどうか疑問に思っています。電卓は、ユーザーから次のような 1 行を受け取り2 3 + 7 4 - *
ます。間にスペースを入れて、すべての操作の後に1つの結果を出力することを想定しています。
ここに私のコードの一部があります
私は結果として奇妙な数字を得ています。スタックを正しく読み込んでいますか?
c++ - スペースで区切られたデータを読み取り、適切なコンテナにプッシュします
入力ストリームからスペースで区切られたデータを読み取る方法に問題があります。
J 123 7 3 M を入力する必要があるとしましょう。最初は文字で、最後は文字です。残りはintです。
しかし、このコードは問題を解決しません。いろいろな組み合わせを試しましたが、まだ何もありません。
すべてをcharとして読み取ってからintに変換できると考えていました。
それと同様の質問があることは知っていますが、私の場合は、ダイナミ配列ではなく文字列なしで解決したいと思います(動的配列である可能性がありますが、長さは設定されていません)。
編集
私は次の方法でそのようなストラムを読むことができました:
ただし、1 つ問題があります。「F 1 23 2 2 W」と入力すると、F12322@ が表示されます。末尾に「@」が付いている理由がわかりません。何かご意見は?
EDIT2:
whileループの後、問題は解決します。