我正在努力实现这一目标:
char * fname = "results5.txt"
使用这样的宏:
#define FILENAME(NUM) "results" NUM ".txt"
int number = 5;
char * fname = FILENAME(number);
有可能这样做吗?怎么了?谢谢。
我正在努力实现这一目标:
char * fname = "results5.txt"
使用这样的宏:
#define FILENAME(NUM) "results" NUM ".txt"
int number = 5;
char * fname = FILENAME(number);
有可能这样做吗?怎么了?谢谢。
由于您标记了 C 并想要基于宏的解决方案,#
因此在宏中使用 a
#define FILENAME(NUM) "results"#NUM".txt"
^^^^^
char *fname = FILENAME(5);
小心这种方式你不能使用变量。
int number = 5;
char *fname = FILENAME(number); // IMPOSSIBLE
否则,要使用变量,您应该使用函数。
让一切变得更容易
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);
您已将您的问题标记为C
和C++
。对于这一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
为此使用比全大写更好的名称。
#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