0

文字列の 1 文字と別の文字列 (1 文字より大きい場合とない場合があります) を比較するにはどうすればよいですか?

このプログラムでは、ほぼ 300 行のランダム エラーが表示されます。エラーは特定の行番号も参照していません。「char*」、「」、または「std::to_string」に関する多くのものです。

#include <iostream>
#include <string>

using std::cout;
using std::string;

int main() {
    string str = "MDCXIV";
    string test = "D";

    if (test == str[4]) {     // This line causes the problems
        cout << test << endl;
    }
    return 0;
}
4

6 に答える 6

2

別の文字列と比較する前に、str[4] (文字) を文字列に変換する必要があります。これを行う簡単な方法を次に示します

if (test == string(1, str[4])) {
于 2013-09-13T20:38:50.553 に答える
1

char を std::string と比較していますが、これは有効な比較ではありません。次のように、std::string::find を探しています。

if( test.find( str[4] ) != std::string::npos ) cout << test << "\n";

testに が含まれて いる場合、これは true を返すことに注意してくださいstr[4]

于 2013-09-13T20:37:56.807 に答える
0

また"D"、そのように比較する場合は、文字列値ではなく char 値である必要があります。

std::string myString = "Hello World";
const char *myStringChars = myString.c_str();

アクセスする前に、char配列に変換する必要があります。あなたがしない限り。

str.at(i);

次のように書くこともできます

str[i]<--あなたがしたこと。

基本的に、これはすべて、次のように初期化する必要があるテストに要約されますchar test = 'D';

最終出力..

#include <iostream>
#include <string>

using std::cout;
using std::string;

int main() {
    string str = "MDCXIV";
    char test = 'D';

    if (test == str[4]) {     // This line causes NO problems
        cout << test << endl;
    }
    return 0;
}
于 2013-09-13T20:39:01.577 に答える