• ベストアンサー

PHPのsubstr関数をC++とObjective-C++に置き換え

PHPのsubstr関数をC++とObjective-C++に置き換える方法 ・PHP $s = "abcdefg"; $t = substr($s, 3, 2); というPHPのソースから C++と Objective-C++に変更したいのですが どう記述すればよいのでしょうか? ・C++ char s[] = "abcdefg"; ??? ・Objective-C++ iOSは3.2です。 NSString *s = @"abcdefg"; ???

質問者が選んだベストアンサー

  • ベストアンサー
  • capy2009
  • ベストアンサー率72% (337/465)
回答No.5

> strncpyは最後にNULLが付加されると思っていたのですが、 されませんよ(文字列がサイズより大きい場合) > Objective-C++ではmemsetや敢えてNULLを付加しないと > 文字列表示で、おかしく表示されます Objective-C++ というものを知らないので、何とも言えません。

その他の回答 (4)

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.4

> Cの場合 strncpy( s2, s + 2, 2 ); となりますかね。 Objective-C の方も substringWithRange:NSMakeRange(2, 2) かもしれないので、その辺はご自分でチェックしてください。

mikkychan2
質問者

お礼

うまくいきました。 ありがとうございました。 ところで、strncpyは最後にNULLが付加されると思っていたのですが、 Objective-C++ではmemsetや敢えてNULLを付加しないと 文字列表示で、おかしく表示されます。 これはgccの仕様?でしょうか

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.3

書き間違いがありました。 C++ なら string str( "abcdefg" ); string str2 = str.substr( 3, 2 ); です。

mikkychan2
質問者

補足

具体的な回答ありがとうございます。 すみません、私のはやとちりで、C++でなくCの場合をお聞きしたかったのですが、 C++の方法をお聞きしたので Cから char s[] = "abcdefg";を C++に置き換える方法でもかまいませんので教えていただけますか?

  • capy2009
  • ベストアンサー率72% (337/465)
回答No.2

C++ なら string str( "abcdefg" ); str.substr( 3, 2 ); Objective-C なら NSString *str = [[NSString alloc] init]; str = @"abcdefg"; NSString *str2 = [str substringWithRange:NSMakeRange(3, 2)];

  • mickymac
  • ベストアンサー率37% (90/240)
回答No.1

アイデアだけですが、外部シェルスクリプトを呼び出す、ではだめなんでしょうか。

関連するQ&A