2016-07-14 9 views
-4

私はどこにでも見てきましたが、私はPHPのために1つを見つけましたが、C++は見つかりませんでした。私はC++クラスのプロジェクトのために少しコンソールRPGを作っていますが、私は関数や可能ならば関数を避けたいと思いますが、そうでなければ使用します。文字列の割り当てにエラーがあります。 (C++)

サンプルコード:

int main(){ 
    string pName; 
    string pWpnName; 
    int pDamage=0; 
    int wdSwrdD=1; 

if (pDamage==wdSwrdD)pWpnName="Wooden Sword"; 

cout<<"Please enter a name"; 
cin>>pName; 

pDamage++: 

cout<<"Name: "<<pName<<endl; 
cout<<"Weapon: "<<pWpnName<<endl; 
return 0} 

しかし、私はこれを行うたびに、出力:Name: pName(それがになっているように)とWeapon:を。それはちょうど空白のままであり、私はそれが文字列をどのように使用しているかと関係があると感じています...

+2

'pWpnName =="木刀 "を変更します。 'pWpnName ="木刀 ";'あなたにはタイプミスがあります。 –

+0

pWpnNameは空の文字列に初期化されます。それは決して変化しない(if文をチェックする)ので、空の文字列を出力します。 –

+0

@AfriCoffeeまた、あなたの質問のタイトルはまったく間違いです。 –

答えて

0

==は入力ミスです。=は代入です。だから、コードのあなたの部分を変更する必要があります。

if (pDamage==wdSwrdD) 
    pWpnName=="Wooden Sword"; // here you're doing comparison 

...に:それは作るための簡単なタイプミスだが、困難な場合がありますので

if (pDamage==wdSwrdD) 
    pWpnName="Wooden Sword"; // here you're doing assignment 

ほとんどのコンパイラは、この動作のための警告を生成する必要があります捕まえる。

3

命令型言語(およびC++のうちの1つ)がどのように機能するかについての基礎は理解できません。プログラムは文ごとに文を実行し、条件がifの場合は、実行フローがその文を実行するときに、ただ1度だけチェックします。だから、pDamageを増やすという事実は、魔法のようにpWpnNameを変更することはありません。また、比較演算子==を代入演算子=に変更する必要があります。

ループが必要なのは、ループが作成されているループ(ループが作成されています)を繰り返し実行するループが必要な場合がほとんどですが、提供した情報に基づいてさらに何かを言うのは難しいです。あなたがのgetline()関数を使用することができます

+0

Augh、私はそれが私の側で何かであることを知っていました、プログラミングに関しては本当にノブです...そして、 '=='演算子はタイプミスです。プログラムの残りの部分でループをif(else)文に通すにはどうすればよいですか?別の関数を使用して呼び出す必要があるのですか、それをメインに保つ方法がありますか? – AfriCoffee

+0

@AfriCoffeeオンラインでも店舗でも、多くの良い教科書があります。非常に基本的なことから学ぶ必要があるので、私はそれをよりよく説明することはできません。 – Slava

1

cout<<"Please enter a name"<<endl; 
getline(cin, pName); 
pDamage++; 

関数は、ストリームから行を取得することができますSTDを設定::蒸気引数としてCIN、および変数にライン入力を割り当てます。

0

あなたのプログラムでは、文字列を初期化していないので、あなたはpNameのユーザ入力を受けているので、名前が表示されます。 pWpnNameの場合、pDamage = 0とwdSwrD = 1を初期化し、(0 == 1)が真でない場合は、pWpnNameという文字列がWoodenに初期化されることはないので、宣言時には初期化されず、それは空白を表示するように剣。

関連する問題