C++でのcinのsetwについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぺき

C++でのcinのsetwについて

#1

投稿記事 by ぺき » 14年前

はじめまして、初めての投稿ですが、よろしくお願いします。
C言語は2年程度の経験、C++を学習し始めたところです。

以下のようなプログラムで、123456という数字を入力したときに、
setw(3)を使って最初の3文字分(つまり、123)だけaに代入したいのですが、
うまくいかずに123456が入ってしまいます。
C言語だと、scanf("%3d",&a);でうまくいくのですが、
C++ではできないのでしょうか?
ちなみにaをstring型で定義しているときは出来ました。
そもそもsetw自体が(本によると)出力に使うマニピュレータだから、
入力で使用してはダメなのでしょうか?


#include <iostream>
#include <iomanip>

int main(void){
using namespace std;
int a;

cin >> setw(3) >> a;
cout << a;

return(0);
}

ビルド環境はwinXPで、microsoft visual C++ 2010 Expressです。
簡単な質問だと思いますが、よろしくお願いします。
画像

めるぽん

Re:C++でのcinのsetwについて

#2

投稿記事 by めるぽん » 14年前

最初の3文字だけの数字を直接入力してもらう方法は分かりませんが、
string s;
    cin >> s;
    istringstream ss(s.substr(0, 3));

    int a;
    ss >> a;
    cout << a;
と書くのはどうでしょうか。

ぺき

Re:C++でのcinのsetwについて

#3

投稿記事 by ぺき » 14年前

返事とても遅くなりました。
なるほどそういう手があるんですね。
勉強になりました。
ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る