4

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

char * fname = "results5.txt"

使用这样的宏:

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

int number = 5;
char * fname = FILENAME(number);

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

4

3 回答 3

5

C

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

#define FILENAME(NUM) "results"#NUM".txt"
                               ^^^^^
char *fname = FILENAME(5);

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

int number = 5;
char *fname = FILENAME(number); // IMPOSSIBLE

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


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);
于 2013-04-16T14:54:35.887 回答
1

您已将您的问题标记为CC++。对于这一C++部分,最简单的是:

inline std::string FILENAME(int number) {
  std::ostringstream s;
  s << "results" << number << ".txt";
  return s.str();
}



int number = 5;
std::string fname = FILENAME(number);

当然,您可能会FILENAME为此使用比全大写更好的名称。

于 2013-04-16T15:01:34.317 回答
0
#include <sstream>
#include <string>

int number = 5;
std::stringstream ss;
ss << "results" << number << ".txt"
std::string filename = ss.str(); //if you need it as C++ string
char const* filename = ss.str().c_str(); //if you need it as C string
于 2013-04-16T15:01:12.447 回答