文字リテラルを文字列の最初の要素と比較して、ファイル内のコメントを確認したいと思います。なぜcharを使用するのですか?これを、コメントに文字変数を受け入れる関数にしたいと思います。文字列の長さを1文字に制限したいので、文字列を許可したくありません。
そのことを念頭に置いて、簡単な方法は、文字をアドレス指定してstd::stringのcompare関数に渡すことだと思いました。しかし、これは私に意図しない結果を与えています。
私のコードは次のとおりです。
#include <string>
#include <iostream>
int main ( int argc, char *argv[] )
{
std::string my_string = "bob";
char my_char1 = 'a';
char my_char2 = 'b';
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char1 << std::endl;
if (my_string.substr(0,1).compare(&my_char1)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string.substr(0,1) << std::endl
<< "CHAR : " << my_char2 << std::endl;
if (my_string.substr(0,1).compare(&my_char2)==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
std::cout << "STRING : " << my_string << std::endl
<< "STRING 2 : " << "bob" << std::endl;
if (my_string.compare("bob")==0)
std::cout << "WOW!" << std::endl;
else
std::cout << "NOPE..." << std::endl;
}
私に...
STRING : b
CHAR : a
NOPE...
STRING : b
CHAR : b
NOPE...
STRING : bob
STRING 2 : bob
WOW!
関数が部分文字列と文字が同じではないと考えるのはなぜですか。charsとstd::string varsを適切に比較する最短の方法は何ですか?
(私の質問の再分類を避けるための短い怒り....スキップしてください)
私が最短と言うとき、私は雄弁をコーディングしたいという願望からそれを意味します。これは宿題の質問ではないことに注意してください。私は化学工学の博士課程の候補者であり、独立した研究の一環としてコーディングを行っています。私の最後の質問の1つは、虐待の境界で考慮した効率について尋ねたときに、ユーザーmsw(これもスナイド発言をしました)によって「宿題」として再分類されました。私のコードは他の人に再利用される場合とされない場合がありますが、読みやすく、保守しやすいものにしようとしています。また、コードを可能な限り効率的にしたいという奇妙な願望もあります。したがって、効率と雄弁さに関する質問。