• ベストアンサー

簡単なstringの使い方。

int main() { char answer[6]; cout <<"あなたは学生ですか?\n"; cin>> answer; //ユーザーはここでYESと入力 if(anser =="YES"){ cout<<"学生証を提出してください。\n"; } return 0; } このようなプログラミングでYESと入力しても "学生証を提出してください。”が出てきません。 もしこれを char answer にしてYとだけ入力するようにすると動きます。 なぜYESと入力するようにするとうまくいかないのか、 どなたかわかる方大至急よろしくお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#include <iostream> #include <string> int main() { std::string answer; std::cout << "あんたガクセー? " << std::flush; std::cin >> answer; if ( answer == "YES" ) { std::cout << "学生証見せて!" << std::endl; } return 0; }

pinoko2003
質問者

お礼

またもや、epistemeさん ありがとうございます。感謝 感謝。

その他の回答 (1)

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

おそらくanswerというアドレスと比較しているのだと思います。 if(::strcmp(answer,"YES") == 0) としたらどうでしょうか?

pinoko2003
質問者

お礼

ありがとう。ございます。 そのように入力したらちゃんと動きました!

関連するQ&A

  • C言語/プログラミング

    int Trianglearea(int x, y) { return x * y / 2; } int main() { int x, y, ans; cout << "底辺を入力してください。\n"; cin >> x; cout << "高さを入力してください。\n"; cin >> y; cout << "三角形の面積は" <<Trianglearea(x, y) << "です。\n"; return 0; } これで、実行したらエラー発生しました。エラーを治す方法を教えてください。

  • string から unsigned char へ

    unsigned char* uchar_string(string* str) { int length = str->length(); const char* cchar = str->c_str(); unsigned char* uchar = new unsigned char[length+1]; for(int i=0; i=length; i++) { uchar[i] = (unsigned char)cchar[i]; } return uchar; } int main() { string str; cin >> str; unsigned char* uc; uc = uchar_string(&str); cout << uc; delete uctest; return 0; } このようにしたところ、cout << uc; が出力されず入力待ちとなり正常に動きませんでした。 原因がわからないです。原因と解決方法のご教授願います。

  • 配列の練習問題

    #include<iostream> using namespace std; //count関数の宣言 int count(char str[], char ch); int main() { char str[100]; char ch; cout << "文字列を入力して下さい。\n"; cin >> str; cout << "文字列から探す文字を入力して下さい。\n"; cin >> ch; int c = count(str, ch); cout << str << "の中に" << ch << "は" << c << "個あります。\n"; return 0; } //count関数の定義 int count(char str[], char ch) { int i = 0; int c = 0; while (str[i]) { if (str[i] == ch) c++; i++; } return c; } こんにちは。 この問題の解答のプログラムの意味がイマイチ解らないので良かったら教えて下さい。 確認がてらに質問します。 よろしくお願いします。

  • 実行

    こんにちは。私は昨日からC++を始めたのですがなかなかうまくいかないためこちらに質問させていただくことにしました。 #include <iostream.h> int main(void) { int x; int y; cout<<"xを入力: 10"; cin>>x; cout<<"yを入力: 2"; cin>>y; cout<<"x+yは"<<x+y<<"です。\n"; return(0); } このようなプログラムを作成したのですが実行してみたところ、 xを入力: 10 これ以降下までいきません。どうすればうまくいくのでしょうか?宜しくお願いします。

  • 合計値を求める関数

    #include<iostream> using namespace std; //sum関数の定義 int sum(int x, int y) { return x + y;  } int main() { int num1, num2, ans; cout << "1番目の整数を入力して下さい。\n"; cin >> num1; cout << "2番目の整数値を入力して下さい。\n"; cin >> num2; ans = sum(num1, num2); cout << "合計は" << ans << "です。\n"; return 0; }  ここのreturn x+y;の所の合計値を戻り値として返す処理の仕組みを解りやすく教えて欲しいです、戻り値はちょっと解りづらいです、よろしくお願いします。

  • 改行文字について

    #include<iostream> using namespace std; int main(void) { char c; while (cin.get(c)) if (c == '\n') cout << "[RET]\n"; else cout << c; return(0); } これのif (c == '\n')の改行文字と等しいとは何のことを指すのでしょうか? よろしくお願いします。

  • VC++でプログラムの勉強をしています。

    プログラムは最近はじめたばかりです。While文とif文を使ってクイズを作ってみたところ、一個目のsinで入力を求めているところから無限ループになってしまいました。色々調べてcin.cler()とsin.ignore()を入れたりもしてみましたが上手くいきませんでした。どこを間違えているのでしょうか? //クイズ #include <iostream> using namespace std; int main()//cin.clear();cin.ignore();???? { int a; int b; while(1) { cout<<"ネコ型のロボットが出てくるアニメといえば?"<<endl; cout<<"A)ドラえもん B)ドラエもん C)ほりえもん D)サザエさん"<<endl; cin>>a; if(a=='A') { cout<<"ファイナルアンサー?"<<endl; cout<<"Y)Yes N)NO"<<endl; cin>>b; if(b=='Y'){break;} if(b=='N'){cout<<"ゆっくり考えてね!!"<<endl;} if(b!='Y'||'N'){cout<<"正しく入力してね!"<<endl;} } if(a=='B'||'C'||'D') { cout<<"ファイナルアンサー?"<<endl; cout<<"Y)Yes N)NO"<<endl; cin>>b; if(b=='Y'){cout<<"残念!!"<<endl;} if(b=='N'){cout<<"ゆっくり考えてね!!"<<endl;} } if(a!='A'||'B'||'C'||'D'){cout<<"正しく入力してね!"<<endl;} } cout<<"正解!!"<<endl; }

  • cout関数を使っているのですが,画面に出力されません。

    いつもお世話になっております。今回はC++言語について質問があります。 次のプログラムは画面から入力された文字の数とリターンの数を数えるプ ログラムです。 /* 入力の文字数を数えるプログラム */ #include <iostream.h> int main(int argc, char **argv){ char c; int RETcount = 0; //改行数 int CHARcount = 0; //文字数 while(cin.get(c)){ if(c == '\n'){ ++RETcount; } else{ ++CHARcount; } } cout << "RET:" << RETcount << '\n'; //(1) ここの部分が表示されません。 cout << "CHAR:" << CHARcount << '\n';//(2) ここの部分は表示されます。 return 0; } 何故か(1)の部分が表示されません(^^; いきなり(2)の部分が表示されます。 そこで(1)(2)の部分を下記の(3)(4)(5)に書換え cout << "RET:" << RETcount << '\n'; //(3) cout << "RET:" << RETcount << '\n'; //(4) cout << "CHAR:" << CHARcount << '\n'; //(5) 実行した所(4)と(5)の部分は表示されるのですが, (3)の部分が表示されません。 つまりwhile{・・・・・}の直後のcoutが表示されません。 while(cin.get(c))で何かが起こっているのでしょうか????(^^; 使用環境は,Windowsで入力の終了は[Ctrl + Z]で行っています。 ご存知の方どうかご指導よろしくお願いします。

  • icpcの過去問

    問題→ http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1147&lang=jp 自分の回答→ #include <iostream> using namespace std; int numbers[105]; int order(int n,int num){ if(num==0){numbers[0]=n;} else{ for(int i=0;i<num;i++){ if((numbers[num-(i+1)])>n){//cout << "here1"; numbers[num-i]=numbers[num-(i+1)];//cout << "here2"; numbers[num-(i+1)]=n;//cout << "here3"; } } } return 0; }//昇順に並べる int main(){ int n; while(cin>>n,n){ int count,answer; for(int i=0;i<n;i++){int Numb; cin >> Numb;if(i==2){cout << "here";} order(Numb,i); count++; }//昇順に要素が並んだ for(int i=1;i<count-1;i++){ answer += numbers[i]; } answer = answer/(count-2); cout << answer << endl; } } 実行結果→ 3 7 6 5 Bus error となってしまいます。最後の入力の時に、cinされずにbuserrorになるのですがなぜなのでしょうか。

  • 入力文字数がでません。

    C++です。以下を実行したのですが、実行結果に改行数は出るが文字数がでません。お願いします。 #include <iostream.h> int main(void) { char c; int ccount = 0; int ncount = 0; while (cin.get(c)) { ccount++; if (c == '\n') ncount++; } cout << "文字数=" << ccount << '\n'; cout << "改行数=" << ncount << '\n'; return (0); }