AnsiString参照カウンタの罠 ― 2007-08-14 11:50
#include <vcl.h>
#include <stdio.h>
class THogeString
{
protected:
AnsiString FStr;
public:
THogeString(){FStr = "hogehoge";}
AnsiString Get(void){return FStr;}
};
void split(char *aStr)
{
aStr[strlen(aStr)/2] = '\0';
}
int main(int argc, char* argv[])
{
THogeString hoge;
AnsiString str1 = hoge.Get();
puts(str1.c_str());//"hogehoge"
split(str1.c_str());
AnsiString str2 = hoge.Get();
puts(str2.c_str());//"hoge"!
return 0;
}
文字列の中身壊しちゃうけどこぴったやつだからいいかー。
といってると恐ろしいものの片鱗を味わうことになるぜ。
THogeString::GetでUnique()しておけばよさげ。
#include <stdio.h>
class THogeString
{
protected:
AnsiString FStr;
public:
THogeString(){FStr = "hogehoge";}
AnsiString Get(void){return FStr;}
};
void split(char *aStr)
{
aStr[strlen(aStr)/2] = '\0';
}
int main(int argc, char* argv[])
{
THogeString hoge;
AnsiString str1 = hoge.Get();
puts(str1.c_str());//"hogehoge"
split(str1.c_str());
AnsiString str2 = hoge.Get();
puts(str2.c_str());//"hoge"!
return 0;
}
文字列の中身壊しちゃうけどこぴったやつだからいいかー。
といってると恐ろしいものの片鱗を味わうことになるぜ。
THogeString::GetでUnique()しておけばよさげ。
コメント
トラックバック
このエントリのトラックバックURL: http://shimitei.asablo.jp/blog/2007/08/14/1723176/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。