文件路径开头的C++空间

C++ space at start of filepath

本文关键字:C++ 空间 开头 路径 文件      更新时间:2023-10-16

我有一个C++程序,它应该在控制台中打印出要作为命令行参数传递给另一个程序的结果。

我遇到的问题是,其中两个输出被打印为一个没有空格的字符串,因此没有作为两个单独的参数。

是否可以在其中一个字符串的开头添加一个空格来分隔参数?

这就是程序应该输出的内容:

0 haarcascade_frontalface_alt.xml 2014-10-16T11:00:46
1 haarcascade_frontalface_alt.xml 2014-10-16T11:00:46
2 haarcascade_frontalface_alt.xml 2014-10-16T11:00:47
3 haarcascade_frontalface_alt.xml 2014-10-16T11:00:47

相反,它正在输出:

0haarcascade_frontalface_alt.xml 2014-10-16T11:00:46
1haarcascade_frontalface_alt.xml 2014-10-16T11:00:46
2haarcascade_frontalface_alt.xml 2014-10-16T11:00:47
3haarcascade_frontalface_alt.xml 2014-10-16T11:00:47

以下是应该打印的字符串:

int eventCount = 0;
string cascadeName = "haarcascade_frontalface_alt.xml";
string nestedCascadeName = "haarcascade_frontalface_alt.xml";

我正在使用打印它们

        std::cout << ("%s", cascadeName);
        std::cout << ("%d", eventCount);
        timeFound();
        std::cout << std::flush;

timeFound():

int timeFound() {
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [80];
  time (&rawtime);
  timeinfo = localtime (&rawtime);
  strftime (buffer,80," %Y-%m-%dT%H:%M:%S",timeinfo);
  puts (buffer);
  eventCount++;
  return 0;
}

如何使输出按预期打印?

注意:我试过在两条打印线上都加空格,但似乎没有效果。我还尝试在string声明中放置空格,但这导致程序无法定位分类器XML文件。

您没有将printf类型语言(例如'%d''%s')与ostreams一起使用,您只使用operator<<(),它对于您想要输出的类型是重载的。

timeFound()返回其输出:

std::string timeFound() {
    time_t rawtime;
    struct tm * timeinfo;
    char buffer [80];
    time (&rawtime);
    timeinfo = localtime (&rawtime);
    strftime (buffer,80," %Y-%m-%dT%H:%M:%S",timeinfo);
    eventCount++;
    return buffer;
}

然后你想要更像的东西

std::cout << cascadeName << ' ' << eventCount << ' ' << timeFound() << std::endl;

当然-只需插入一些空格,如下所示:

std::cout << cascadeName << " " << eventCount << " " << timeFound() << std::endl;


顺便说一句:

std::cout << ("%s", cascadeName);

没有做你认为它会做的事情-你不能将printf风格的格式与std::cout一起使用-你在这里所做的只是使用逗号运算符,它会丢弃"%s"并计算cascadeName,所以这实际上只是:

std::cout << cascadeName;