【问题标题】:Convert int array to char array in cpp to give filename在cpp中将int数组转换为char数组以给出文件名
【发布时间】:2017-06-07 18:44:05
【问题描述】:

假设我们有一个整数数组 1,2,3(最大为 36,因此每个数字都不是单个数字),我想将文件命名为 123...36.txt。我将在旅途中执行此操作,因此我需要根据 int 数组值更改文件名

我在网上查了一些解决方案,都没有奏效。有一个简单的解决方法吗?谢谢

int main(int argc, char **argv) {

    int i;

    FILE *ptr;

    int b[3]={1,2,3};
    char name[FILENAME_MAX];

    for(i=0;i<3;i++) itoa(b[i],name[i],10);

    name[3]='.';
    name[4]='t';
    name[5]='x';
    name[6]='t';
    name[7]='\0';

    ptr = fopen(name, "w");

    fclose(ptr);

    return 0;
}

【问题讨论】:

  • 为什么不使用std::string 对象而不是字符数组?
  • 我强烈建议使用 C++ 和 std::string 作为名称。如果这样做,最简单的方法可能是遍历数组,将值转换为字符串并将其附加到std::string name
  • itoa() 的第二个参数是指向将存储字符串的缓冲区的指针,而不是字符。
  • 记得在达到操作系统的文件路径长度限制之前停止。
  • 为什么要使用单独的ints 来表示数字的每个数字? int 可以代表123。您已使用 c++ 标记了问题,因此请使用 c++ 为您提供的功能。 std::to_string(number) + ".txt"; 就是你所需要的。

标签: c++ file


【解决方案1】:

最类似于您的算法的事情是仅使用数字来偏移 0 字符的 ascii 值。用这个替换你的 itoa() 行:

for(i=0;i<3;i++) name[i] = '0'+b[i];

这显然假设,正如您的代码所做的那样,传入的 int 值介于 0 和 9 之间。

【讨论】:

  • 数值可以大于9,所以考虑了一下,没有应用
  • 然后你需要指定你想要的结果。您所说的问题(以及您尝试的解决方案)都表明您期望数字。
猜你喜欢
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 2013-05-02
  • 2013-10-14
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
相关资源
最近更新 更多