C++ 将字符数组写入文件,转义字符与其对应的文本一起写入
我正在尝试将字符数组写入文件,转义字符应使用它们的等效文本写入(例如,换行符应写入“\n”,而不是文件中的实际换行符) 如果数组是char*arr=“hello world\n”代码> 我的代码应该是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> 说清楚一点,
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");
当然有一种方法,而且它实际上非常琐碎。如果你能向我们展示你的尝试,以及你的问题所在,那会有所帮助。