タグ

charに関するyowanoのブックマーク (2)

  • 文字列のメモリ保持期間とポインタについての疑問 - OKWAVE

    場合によります。 >char* s; >s = "abcdefg"; >この"abcdefg"により確保された領域がいつまで保持されるのかわかりません。 >・これを実行しているメソッドを抜けるまでなのか? >・free(s)するまでなのか?(free(s)しなければいけないのか?) この場合は、プログラムがメモリにロードされた時点でメモリ上に"abcdefg"が配置され、 その先頭アドレスを char型のポインタ変数sに代入しているだけです。 # 「文字列リラテル」で検索されるとよいでしょう。 で、メモリ上に配置され"abcdefg"は、プログラムが終了するまで有効ですから解放する必要はありません。 # ちなみに「定数」扱いになりますので普通は書き換えできません。 >オブジェクトを生成して、そのメンバ変数に >obj1->field1 = "value"; >というように格納して利用する

    文字列のメモリ保持期間とポインタについての疑問 - OKWAVE
    yowano
    yowano 2014/01/02
    文字列リテラルは、プログラム終了時まで保存される。char* str = "abcde"; このstrは、文字列リテラルの先頭アドレスを持っているだけ。strの寿命と文字列リテラルの寿命は相関がない。
  • wstring,string,wchar,char間の変換(C++) - Into the Horizon

    再びc++での文字列処理の話。 c++めんどい(´・ω・`) (2013/12/28) 長らく放置してましたが、結構アクセス数多いので追記。 wstring使うより、pficommonというライブラリをいれてustringを使うのをオススメします。stringを使うのと何も変わらず使えるので。 pficommonは他にも色々便利なので、ぜひ入れてみて下さい。 pficommon : http://pfi.github.io/pficommon/ ■wchar <-> charの変換 mbstowcs, wcstombsを使う。 wchar_t *wc; const char c[] = "あいうえお"; mbstowcs(wc, c, sizeof(c)); ■char <-> stringの変換 string -> char* : c_str()を使う。 char* -> string

    wstring,string,wchar,char間の変換(C++) - Into the Horizon
    yowano
    yowano 2013/09/04
    c -> wc 『mbstowcs()』  wc -> c 『wcstombs()』  c -> s 『=』  s -> c 『c_str()』  s <-> ws 『自作モジュール』
  • 1