【发布时间】:2012-02-17 16:13:31
【问题描述】:
我有一个 const char,它是这样连接而成的:
const char *fileName = "background1";
std::stringstream sstm;
sstm << fileName << "-hd.png";
fileName = sstm.str().c_str();
我的问题是以下指令:
printf("const char = %s size = %d", fileName, sizeof(fileName));
返回:
"const char = background1-hd.png size = 4"
而我希望它会返回:
"const char = background1-hd.png size = 19"
例如,以下给出了方便的结果(因为没有连接):
const char *fileName2 = "background1-hd";
printf("const char = %s size = %d", fileName2, sizeof(fileName2));
返回:
"const char = background1-hd.png size = 19"
如何避免这个问题并保证在我的连接字符中正确计算字符?
谢谢!!
【问题讨论】:
-
c 标签已移除。我不懂C++,但我建议你使用
std::string而不是char *。 -
您最后的代码-sn-p 不会打印您所说的内容。你一定是在什么地方弄糊涂了。 (也许您实际上将
fileName2声明为const char fileName2[] = "background1-hd"?) -
除了您的其他问题之外,此代码
fileName = sstm.str().c_str();为您提供了一个指向临时字符串的指针,使其在语句末尾已经无效。
标签: c++ arrays char concatenation