これをコンパイルしたいのですが、引用符を変更してもエラーが発生します。ヘッダー ファイルにエラーはありますか。お知らせください。
#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();
}
これをコンパイルしたいのですが、引用符を変更してもエラーが発生します。ヘッダー ファイルにエラーはありますか。お知らせください。
#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();
}
=
比較対象ではありませんが、
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";
以下は完全に正しくありません。
if (st = 'a')
if (st = 'b')
まず、=
比較ではなく代入です。第 2'a'
に、 andは文字列リテラルではあり'b'
ません。char
上記の正しい書き方は、
if (strcmp(st, "a") == 0)
if (strcmp(st, "b") == 0)
そうは言っても、C 文字列の使用から離れて、std::string
代わりに使用することをお勧めします。
if (st = 'a')
if (st = 'b')
上記の両方の行で、 l-value(left value) 'st' は配列の先頭を指しており、そのアドレスは変更できません。そのため、コンパイル時に左辺値でエラーが発生します。代入(=)の代わりに等価(==)演算子を使用してIf条件を変更し、最初に値を取得するためにstを逆参照します。
if (*st == 'a')
if (*st == 'b')
さて、私の勉強のラインで。代入演算子 "=" を使用しています string.h ディレクティブをインポートし、strcmp();
そのライブラリの関数を使用します これが役立つことを願っています