如何使用 c/c++ 宏参数创建字符串

Dav*_*vid 4 c c++ c-preprocessor

我正在努力实现这一目标:

char * fname = "results5.txt"

使用这样的宏:

#define FILENAME(NUM) "results" NUM ".txt"

int number = 5;
char * fname = FILENAME(number);
Run Code Online (Sandbox Code Playgroud)

有可能这样做吗?怎么了?谢谢。

mas*_*oud 5

C

由于您标记了 C 并想要基于宏的解决方案,因此#在宏中使用 a

#define FILENAME(NUM) "results"#NUM".txt"
                               ^^^^^
char *fname = FILENAME(5);
Run Code Online (Sandbox Code Playgroud)

小心这种方式你不能使用变量。

int number = 5;
char *fname = FILENAME(number); // IMPOSSIBLE
Run Code Online (Sandbox Code Playgroud)

否则,要使用变量,您应该使用函数。


C++

让一切变得更容易

std::string FileName(int d)
{
    return "results"+ std::to_string(d) +".txt";

    //  or...
    //  std::ostringstream str;
    //  str << "results" << d << ".txt";
    //  return str.str();
}

...

int number = 5;
std::string filename = FileName(number);
Run Code Online (Sandbox Code Playgroud)