C++如何正确计算const char中的字符?

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)