C++ 将字符数组写入文件,转义字符与其对应的文本一起写入

C++ 将字符数组写入文件,转义字符与其对应的文本一起写入,c++,C++,我正在尝试将字符数组写入文件,转义字符应使用它们的等效文本写入(例如,换行符应写入“\n”,而不是文件中的实际换行符) 如果数组是char*arr=“hello world\n” 我的代码应该是 char tempArr[100] ={'h','e','l','l','o','\s','w','o','r','l','d','\n'}; 到文件中 是否有任何方法在C++中实现?< P>而不是将 \n′/Cuth>作为你的一个字符,你可以同时拥有 > \代码>和 'n'/COD> 说清楚一点,

我正在尝试将字符数组写入文件,转义字符应使用它们的等效文本写入(例如,换行符应写入“\n”,而不是文件中的实际换行符)

如果数组是char*arr=“hello world\n” 我的代码应该是

char tempArr[100] ={'h','e','l','l','o','\s','w','o','r','l','d','\n'};
到文件中


是否有任何方法在C++中实现?

< P>而不是将<代码> \n′/Cuth>作为你的一个字符,你可以同时拥有<代码> > \代码>和<代码> 'n'/COD>


说清楚一点,我的意思是让你把
'\\'
'n'
都放在数组中。这样,将同时打印
\'
'n'

是的,这里有一个C解决方案:

void printAndEscapeString(const char *input, FILE *output)
{
    const char escapeCodes[] = {
        '\n',
        '\t',
        '\v',
        '\'',
        '\"',
        '\?',
        '\a',
        '\b',
        '\f',
        '\r',
    };

    const char escapeReplacements[] = {
        'n',
        't',
        'v',
        '\'',
        '\"',
        '?',
        'a',
        'b',
        'f',
        'r',
    };

    while (*input) {
        for (int i = 0; i < sizeof(escapeCodes); i++) {
            if (*input == escapeCodes[i])
            {
                putc('\\', output);
                putc(escapeReplacements[i], output);

                goto NEXT; // use goto because I'm too lazy to figure out a better way
            }
        }

        fputc(*input, output);

    NEXT:
        input++;
    }
}
void printAndEscapeString(常量字符*输入,文件*输出)
{
常量字符转义码[]={
“\n”,
“\t”,
“\v”,
'\'',
'\"',
'\?',
“\a”,
“\b”,
“\f”,
“\r”,
};
常量字符转义替换[]={
"n",,
"t",,
"v",,
'\'',
'\"',
'?',
“a”,
“b”,
"f",,
“r”,
};
while(*输入){
对于(int i=0;i
我知道在标准C中有一种方法可以做到这一点

FILE *fp;

int check = 0;

fp = fopen("output.txt", "w");
fprintf(fp, "%s", "char tempArr[100] = {");
for (i = 0; arr[i]; i++)
{
    if (i)
        fputc(',', fp);
    check += 4;
    fputc('\'', fp);
    switch(arr[i])
    {
        case '\n':
            check++;
            fputc('\\', fp);
            fputc('n', fp);
            break;
        // ...
        default:
            fputc(arr[i], fp);
    }
}
fprintf(fp, "%s", "};\n");
if (check >= 100)
    fprintf(stderr, "WARNING: tempArr contains MORE than 100 characters!\n");

当然有一种方法,而且它实际上非常琐碎。如果你能向我们展示你的尝试,以及你的问题所在,那会有所帮助。