0

まず、この問題の解決策は非常に効率的である必要があります。

私の問題は、2 つAPT_Stringの s (DataStage タイプ) の特定の部分を比較する必要があることです。つまり、文字列は、"Brown Marrow" などの空白文字を含む姓です。ただし、名前は 30 バイトのフィールドにあり、残りのスペースはスペース文字で埋められています。

簡単に言うと、2 つの連続したスペース文字の最初のインスタンスを見つける必要があります (有用な姓の終わりを知らせるため)。私の解決策は

bool foundit = false;

for (int ind = 0; ind<=q_array[i].LAST_NAME.length() && !foundit; ind++) { if (q_array[i].LAST_NAME[ind] == ' ' && q_array[i].LAST_NAME[ind+1] == ' ') { cout<<"two spaces in a row at char " << ind << endl;

foundit = true;

}
}

残念ながら、APT_String には find() がないようです。これを行うためのより良い、またはより効率的な方法はありますか?

4

2 に答える 2

0

繰り返しますが、特定の文字が文字列に含まれているかどうかを知りたい場合は、それを繰り返す必要があります。他にチャンスはありませfindstrcmp。このループの周りにチャンスはありません。

これで、管理する必要のあるメンバーもあるAPT_String独自のクラスでいつでもそれをラップし、それを使用して文字列の最後にジャンプできます。myAPT_Stringsize_t string_size

于 2011-05-23T17:55:06.270 に答える
0

30 バイトのフィールドはスキャンに時間がかかりませんね。

名前の末尾を探す場合は、文字列の末尾から始めて、最初の非スペースまで逆方向にスキャンします。

于 2011-05-23T17:59:28.390 に答える