2

これをコンパイルしたいのですが、引用符を変更してもエラーが発生します。ヘッダー ファイルにエラーはありますか。お知らせください。

#include<iostream.h>
#include<conio.h>


void main()
{
char st[20];

cin>>st;


cout<<st<<endl;

if (st = 'a')
cout<<"This is a";


if (st = 'b')
cout<<"This is b";

getch();
}
4

4 に答える 4

2

=比較対象ではありませんが、

if (st = 'a') 


if (st = 'b')

変更を試みst、上記の比較の結果は常にtrue.

使用してみてくださいstd::string

#include <string>

...

std::string st;

std::cin >> st;

cout<<st<<endl;

if (st == "a")
  cout<<"This is a";


if (st == "b")
  cout<<"This is b";
于 2013-04-20T06:15:33.547 に答える
2

以下は完全に正しくありません。

if (st = 'a')
if (st = 'b')

まず、=比較ではなく代入です。第 2'a'に、 andは文字列リテラルではあり'b'ません。char

上記の正しい書き方は、

if (strcmp(st, "a") == 0)
if (strcmp(st, "b") == 0)

そうは言っても、C 文字列の使用から離れて、std::string代わりに使用することをお勧めします。

于 2013-04-20T06:16:02.940 に答える
1
if (st = 'a')
if (st = 'b')

上記の両方の行で、 l-value(left value) 'st' は配列の先頭を指しており、そのアドレスは変更できません。そのため、コンパイル時に左辺値でエラーが発生します。代入(=)の代わりに等価(==)演算子を使用してIf条件を変更し、最初に値を取得するためにstを逆参照します。

if (*st == 'a')
if (*st == 'b')
于 2013-04-20T06:23:27.180 に答える
0

さて、私の勉強のラインで。代入演算子 "=" を使用しています string.h ディレクティブをインポートし、strcmp();そのライブラリの関数を使用します これが役立つことを願っています

于 2014-07-02T12:56:23.820 に答える