-10

私はプログラミングが初めてで、C++しか使用できません。私は RPG に取り組んでいますが、何らかの理由で、文字列に設定した値をプログラムに出力させることができません。void main で文字列「weapon」を定義することから始めました。

void main()
{
string weapon;
cin >> weapon;
if(weapon = "A")
{
weapon == "sword";
}
}

私はこのようなコードを持っていて、その上に「武器」(上記のコードからわかるように剣に設定されていた)を使用する関数があり、それを印刷しましたが、それは関数(voidメインの上にあった)で、両方を定義済みの変数にするために、voidメインと関数の両方でそれらを定義する必要がありましたが、そうすると、実行時にプログラムに何も表示されません。すべてを正しく記述しました (上記は単なる例です) が、エラーを作成しない唯一の方法は、コードの両方の部分でそれを定義することです。そのうちの 1 つがまだ定義されていないため、関数と void メインの両方を定義しました。なぜ機能しないのですか?どうすれば修正できますか?ありがとう

PS文字列ライブラリと名前空間を含めました。

4

4 に答える 4

6

void main()違法です。int main()一部のコンパイラは誤って を受け入れますが、そうである必要がありますvoid main()

if(weapon = "A")
{
weapon == "sword";
}

これを逆手に持っているようです。ユーザーが何を入力したかに関係なく、singleは定数にoperator=設定されます。比較は定数と比較され、その結果はすぐに破棄されます。おそらく、 で比較を使用し、 ?の本体で割り当てを使用するつもりでした。weapon"A"operator==weapon"sword"ifif

于 2013-07-21T18:40:50.453 に答える
5

=必要な場所で使用して==おり、その逆も同様です。次のようにする必要があります。

if(weapon == "A") { weapon = "sword"; }
于 2013-07-21T18:39:32.577 に答える
1

少なくとも私が読んだ限りでは、漠然と次のようなコードがあります。

void f() { 
    string weapon;
    cout << weapon;
}

int main(){ 
    string weapon = "sword";
    f();
}

...そして問題は、に割り当てている値が、呼び出し時に使用されていないことweaponです。mainf

それがおおむね正しいと仮定すると、あなたが見ているのは正常で予期される動作です。weaponで定義したmainは、 で定義した とは別の変数weaponですf。一方に値を割り当てても、他方には影響しません。

目的の効果を得るには、ある値から別の値にパラメーターとして値を「渡す」必要があります。

void f(string w) { 
    cout << w;
}

int main() { 
   string weapon = "sword";
   f(weapon);
}

このように呼び出すと、 inが割り当てられているf現在の値のコピーが渡されるため、同じ値を使用できます。weaponmainf

于 2013-07-21T18:48:21.677 に答える
1

C++ でプログラミングするオンライン チュートリアルを検索する必要があります。それは始めるのに良い場所です。または、C++ プログラミングに関する本を購入してください。

于 2013-07-21T23:36:05.300 に答える