私が取り組んでいるプロジェクトでは、テキストファイルから整数を読み込もうとしています。この場合、それらは、U = 220Vのような変数としてフォーマットされているので、私はイコールこれは私が出ているコードであるVに署名した後から読み取るしようとしています:ではテキストファイルから整数を読み込む
if (word[0] == 'U') {
//declaring variables for checking for certain letters
char v = 'V';
char m = 'm';
char M = 'M';
//taking in integer for voltage
while (word[i] != v) {
volt = volt + word[i];
i++;
}
cout << volt << endl;
テストケースでは、U = 200V、U = 220V、U = 22000mVの3つの値があります(mはミリ秒で、後に異なる関数で処理されます)。テストすると、出力が表示されます。
最初の出力は正しいです。 2番目と3番目のケースでは、最初の数が失われているように見え、3番目のケースでは、最後にもう1つゼロが追加されています。私はもともとそれだけで最初の値を破棄したと思った、私はそれが元々最初に読み値の前に読み込まれる値か見て
volt = volt + word[i];
volt = volt + word[i-1];
にコードの行を変更しました。この中で
=200
=200
=20000m
は、私がここに見下ろす午前私のコードのロジックに欠陥があります:場合、それはとしてフォーマット出力で、正常に動作した場合、私はそれが何を期待する何をしましたか?
EDIT:それをさらにデバッグしようとしている間に、ループの外側からループ内に最終印刷行を移動して、ループが何段階ずつ出力しているかを確認しました。それは2で始まり、200000mで終了するまで各繰り返しの最後に0を続けているように見えます
std :: getlineには、= simpleで分割するオーバーロードがあります。 =の後のテキストをストリングストリームにポップし、整数を読み込みます。読み込みは、最初の非整数文字、たとえばVで停止します。その後、その文字を読んでください。 – user4581301