c++ - 转义字符包含在字符串中

标签 c++ strcat

有个奇怪的问题

sprintf(tmp, "\"%s\"", filename);

我希望输出是

"filename"

但是我得到了

\"filename\"

这是怎么回事?

=============================

extern "C" void __export __pascal MyFunc(LPTSTR m_avi, LPTSTR m_mpg)
{
  int frameRate = 20;
  char szAVI[MAX_PATH], szMPG[MAX_PATH];

#ifdef UNICODE
  wcstombs(szAVI, m_avi, _tcslen(m_avi) + 1);
  wcstombs(szMPG, m_mpg, _tcslen(m_mpg) + 1);
#else
  strcpy(szAVI, m_avi);
  strcpy(szMPG, m_mpg);
#endif

  //Call to ffmpeg.exe
  char cmdline[1000] = "ffmpeg ", tmp[50];

  //Overwrite without asking
  strcat(cmdline, "-y ");

  //Input file
  sprintf(tmp, "-i \"%s\" ", szAVI);
  strcat(cmdline, tmp);

  //Lock output at 20 frames per second
  sprintf(tmp, "-r %i ", frameRate);
  strcat(cmdline, tmp);

  //Output file
  sprintf(tmp, "\"%s\"", szMPG);
  strcat(cmdline, tmp);

  WinExec(cmdline, SW_HIDE);
}

最佳答案

由于您显示的代码实际上没有产生任何输出,我怀疑您所说的“输出”来自您的调试器,您在调试器中尝试在调用之前检查数组的值WinExec.

调试器通常使用被调试语言的语法来显示变量的值。本例中的调试器向您显示字符串变量包含引号。由于引号在 C++ 中很特殊,因此调试器还会显示反斜杠以指示引号是字符串内容的一部分,而不表示字符串值的开始或结束。

如果您在调试器中看到反斜杠,则一切正常。如果您看到反斜杠打印出来或显示在程序的某处,那么您需要查看那个代码,因为问题中的代码没有显示任何内容。

关于c++ - 转义字符包含在字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084389/

相关文章:

c++ - 如何调整 RealSense::Image 的大小

c++ - 新手 C++;添加 char* 数组?

c - 在 C 中连接 8 个字符串形成 1 个字符串

c - [C] : Segmentation fault using strcpy() into String Arrays

c++ - 当运行它的小部件(QDialog)在没有多线程的情况下关闭时,如何停止长循环?

c++ - fstream 读/写是否移动文件指针

c++ - 为什么在windows中重复分配内存会变慢?

c - strcat 问题 [C for unix]

c - 在小数组中连接两个字符串时出现段错误

C++ boost : how to implement session per thread