2010-11-26 9 views
0

私はこのコードに取り組んでおり、混乱してしまいました。 バッファにコピーされるのは10番目以降の要素だけです。文字列配列から正確なインデックス要素のみをコピーする方法はありますか?

たとえば、この文字列「http://www.google.com」があります。私は "http:// www"を望んでいません。私のバッファの中にコピーされる部分。

char testDest[256]; 
    char *p= _com_util::ConvertBSTRToString(URL->bstrVal); 

    for (int i = 0; i <= strlen(p); i++)  
    { 
    testDest[i] = p[i]; 
    } 
+0

どのようなバッファー? 'char *'? –

+0

私の質問が更新されます。 – karikari

+0

コピー操作の開始点を見つける方法を尋ねていますか?そうでない場合は、 'strcpy(testDest、p + 11);'(注意:安全でないCコードとエラーチェックなし)を使って 'google.com'部分をコピーするだけです。 – Blastfurnace

答えて

5

カウントしないでください。次のアドレスがhttps://wwwの場合はどうなりますか?またはリンクにwwwが入っていなくても?このような場合、あなたの親友は「パターンマッチング」です。

しかし、あなたが本当に自分のforループは、10の代わりに、ゼロから始めましょう、何をやっている知っている場合:

for (int i = 9; i <= strlen(p); i++) 
{ 
    testDest[i-9] = p[i]; 
} 

また、これはあなたがやっているC++本当にないです。 C++には、charバッファを使うよりはるかに良い選択肢があります。ちょうど言って:

+0

あなたは正しいです。私は現在、httpまたはhttpsのいずれかを処理する方法を理解しようとしていますか? – karikari

関連する問題