Reg*_*_AG 1 c++ arrays concatenation char
我有一个const char,它是通过串联制作的,如下所示:
const char *fileName = "background1";
std::stringstream sstm;
sstm << fileName << "-hd.png";
fileName = sstm.str().c_str();
Run Code Online (Sandbox Code Playgroud)
我的问题是以下说明:
printf("const char = %s size = %d", fileName, sizeof(fileName));
Run Code Online (Sandbox Code Playgroud)
收益:
"const char = background1-hd.png size = 4"
Run Code Online (Sandbox Code Playgroud)
而我希望它会返回:
"const char = background1-hd.png size = 19"
Run Code Online (Sandbox Code Playgroud)
例如,以下提供了方便的结果(因为没有连接):
const char *fileName2 = "background1-hd";
printf("const char = %s size = %d", fileName2, sizeof(fileName2));
Run Code Online (Sandbox Code Playgroud)
收益:
"const char = background1-hd.png size = 19"
Run Code Online (Sandbox Code Playgroud)
如何避免这个问题,并保证在我的连接字符中正确计算字符?
谢谢 !!
小智 8
sizeof()返回变量在内存中占用的字节数(在这种情况下返回指针的大小fileName).
strlen() 返回字符串的长度(这是你需要的).
您也可以尝试以下方法:
#include <iostream>
#include <cstdio>
int main()
{
std::string fileName("background1");
fileName.append("-hd.png");
printf("const char = %s size = %d", fileName.c_str(), fileName.length());
return 0;
}
Run Code Online (Sandbox Code Playgroud)