ここから本文です

文字列の一文字目を消す方法

sho********さん

2010/8/917:24:23

文字列の一文字目を消す方法

TCHAR* hoge=_T("abcde");

hoge の一文字目の"a"はどうすれば削除できますか。

閲覧数:
1,262
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

モコさん

2010/8/917:30:48

これでどうでしょうか。
1._tcscpy( hoge, _T("bcde") );

hoge自身の1文字目ならこちらを。
2.strcpy( hoge, hoge+sizeof(TCHAR) );

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

khurataさん

2010/8/1002:39:05

真面目に消すなら、hoge の _tcslen( ) で文字数を得て、後ろから1文字ずつコピーします。回りくどいソースですが、真面目に書くと次のようになります。
_TCHAR * hoge =_T( "abcde" );
int i;
for ( i = 0; i < _tcslen( hoge ) - 1 ; i ++ ) {
*( hoge + i * sizeof( _TCHAR ) ) = *( hoge + ( i + 1 ) * sizeof( _TCHAR ) );
}
*( hoge + i * sizeof( _TCHAR ) ) = _T( '\0' );
_tprintf( _T( "%s\n" ), hoge );

見た目が消えるだけで良いなら、hoge を _tcsinc( ) します。

参考:http://msdn.microsoft.com/ja-jp/library/f0151s4x.aspx

邪威庵さん

編集あり2010/8/1000:07:42

TCHAR* hoge=_T("abcde");のもとでは、
_tcscpy( hoge, _T("bcde") );
strcpy( hoge, hoge+sizeof(TCHAR) );
は駄目。
TCHAR hoge[] = _T("abcde");
なら、どちらもOK。
TCHAR *でやりたいなら、別のTCHAR配列(仮にhoge2)を用意して、
strcpy( hoge2, hoge+sizeof(TCHAR) );
とかするのがよいのでは?


「消す(削除)」の解釈次第では、空白にするも可?
こんな↓感じで。
hoge[0] = ' '; /* hogeはTCHAR配列 */

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる