2

まず、スペースで区切られた 2 つの整数 N と Q を読み取る必要があります。私はcinを使ってこれをやっています。次に、次の 2 行に、それぞれ N 桁の 2 つの 2 進数が続きます。getchar() を使用してこれらの数値を少しずつ読み取って int ベクトルに入れようとしていますが、ガベージ値を出力しています。改行文字に問題がありますか。最初にそれらを文字列に読み込んでからベクトルに入れることができることは知っていますが、この方法でやりたかったのです。これが私のコードです:

#include <iostream>
#include <algorithm>
#include <vector>
#include <stdio.h>
using namespace std;
int main(){
    int N;
    int Q;
    cin >>N>>Q;
    string A, B;
    //cin >> A>>B;
    vector <int> Abit;
    vector <int> Bbit;

    for (int i=0;i<N;i++){
        char c= (int) getchar();
        Abit.push_back(c);
    }
    for (int i=0;i<N;i++){
    //  cout << Abit.at(i);
        char c= (int) getchar();
        Bbit.push_back(c);
    }
    for (int i=0;i<N;i++){
        cout << Abit.at(i);
    //  char c= (int) getchar();
    //  Bbit.push_back(c);
    }
}
4

2 に答える 2

4

文字を読むだけで簡単にできます。

char c;
for ( int i = 0; i < N; ++i ){
  cin >> c;
  Abit.push_back(c);
}
for ( int i = 0; i < N; ++i ){
  cin >> c;
  Bbit.push_back(c);
}

>> 演算子は、区切り、スペース、改行などの形式を避けます。

于 2013-09-12T21:01:20.770 に答える