如何将Char **放入_stprintf

时间:2010-09-04 15:29:47

标签: c++

我有这个代码。我想把argv [1]作为fileName的前缀。我该怎么做?

int _tmain(int argc, char** argv)
{
...
    _stprintf(fileName, _T("%04d-%02d-%02d-%02d-%02d-%02d-%03d.jpeg"), lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds);

2 个答案:

答案 0 :(得分:1)

_stprintf(fileName, _T("%s-%04d-%02d-%02d-%02d-%02d-%02d-%03d.jpeg"), argv[1], lt.wYear, lt.wMonth, lt.wDay, lt.wHour, lt.wMinute, lt.wSecond, lt.wMilliseconds);

这会做你想要的,但是因为你正在使用C ++,你最好使用字符串流。

#include <stringstream>

int main(int argc, char** argv)
{
    std::stringstream ss;
    ss << argv[1] << "-" << lt.wYear << "-" << lt.wMonth << "-" << lt.wDay << "-" << lt.wHour << "-" << lt.wMinute << "-" << lt.wSecond << "-" << lt.wMilliseconds << ".jpeg";
}

然后,您可以使用ss.str()访问该字符串。您还可以使用与任何输出流相同的流格式修饰符。

答案 1 :(得分:0)

假设完全非标准的_stprintf()sprintf()密切相关,那么:

  • 在名称所在的格式字符串中使用%s
  • 在参数列表中的相应位置传递argv[1]

请注意,argv的类型为char **;因此,argv[1]的类型为char *