3

入力として2つの文字列を使用できるようにしたいのでgetline(cin,s)(行全体を まで選択できます)、または'\n'を使用せずに最初の配列の単語が含まれている場合、2番目の配列を検索します。しかし、文字列を配列に変換する方法がまだ見つかりませんstring::find()strstr()

int main()
{
    string s;
    string s2;
    char array[50];
    char array2[50];

    cout<<"Give me the first word"<<endl;
    getline(cin,s);

    cout<<"Give me the text"<<endl;
    getline(cin.s2);

    array=s;
    array2=s2;
}

私が考えていた2番目の方法は、最初から配列で仕事をすることでした:

char array[50];
cin.getline(array,50);

しかし、ストレート配列を使用する場合、文字列のように配列の長さを見つける方法はありますか?

//example
string s;
int x;

getline(cin,s);
x=line.length();
4

2 に答える 2

4

あなたがそれをする必要がないので、ただそれをしないでください。

この関数を使用して、をchar配列にc_str()変換することもできますが、この場合は不要です。std::string要素(必要なものだと私は信じています)を見つける場合は、文字列を使用してoperator[]、通常の配列であるかのように扱うことができます。

于 2012-11-12T11:40:14.980 に答える
3

and関数c_strのメンバーを使用して、データを配列にコピーできます。std::stringstrcpy

//array=s;
strcpy(array, s.c_str());
//array2=s2;
strcpy(array2, s2.c_str());

charただし、非定数配列を渡さなければならない場合を除き、その必要はありません。これは、 std::strings のルック アンド フィールが文字配列と非常によく似ているためです。ただし、はるかに柔軟です。文字配列とは異なり、文字列は必要に応じて適切なサイズに拡張され、安全な検索と操作のためのメソッドを提供します。

于 2012-11-12T11:39:07.563 に答える