5

ストリームから特定の長さの char 配列にデータを読み取っています。読み取りの最大幅を、その char 配列に収まる十分な大きさにしたいと考えています。

char 配列を使用する理由は、個々のトークンの長さが特定の値を超えることはできないという仕様の一部であるため、コンストラクターの呼び出しをいくつか節約しています。

width() は自分のやりたいことだと思っていましたが、どうやら間違っていたようです...

編集:ストリーム抽出演算子を使用して抽出を実行しています。これは、値が空白で区切られたフラットなテキスト ファイルであるためです。

4

2 に答える 2

5

テキストを処理している場合は、関数を探していgetます: http://cppreference.com/wiki/io/get

const int size = 200;
char myArray[size] = {};

cin.get(myArray, size);

注:size - 1文字のみが読み取られるため、myArray には NULL ターミネータが残ります。

生データの場合は、おそらく http://cppreference.com/wiki/io/read を好むでしょうread: http://cppreference.com/wiki/io/read

const int size = 200;
char myArray[size] = {};

cin.read(myArray, size);

sizeバイトが読み取られます。

于 2010-03-18T16:20:55.547 に答える
4
char x[4];
cin.width(4);
cin >> x;
cout << x;

入力: "abcdef"
出力: "abc" ( x[3]null 終端文字)

この場合、幅は問題なく機能します。

注: 経験的なテストでは、cin.width 呼び出しは 1 つのストリーム操作の間だけ持続することが示されています。cin >> setw(4) >> x;が必要ですが、代わりに使用する方が便利な場合がありiomanipます。

于 2010-03-18T16:26:36.457 に答える