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()しておけばよさげ。