【发布时间】:2021-08-26 20:24:38
【问题描述】:
所以我正在开发一个使用 C++ 的项目。我制作了一个多图和以下类型的迭代器-
std::multimap < size_t, std::pair<size_t, bool> > position_seqsmapper;
std::multimap < size_t, std::pair<size_t, bool> > :: iterator position_seqsmap_iterator;
现在的问题是我需要使用 printf(不能使用 cout,因为该项目有一个相当大的代码库,已经 10 多年了,就是这样)。现在,当我尝试使用下面的代码打印它时,它会引发错误
for (position_seqsmap_iterator = position_seqsmapper.begin(); position_seqsmap_iterator != position_seqsmapper.end(); ++position_seqsmap_iterator)
{
printf("%lu", position_seqsmap_iterator->first);
printf("\t");
printf("%lu", "%d", position_seqsmap_iterator->second);
printf("\n");
}
给出这个错误
warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 2 has type ‘const char*’ [-Wformat=]
printf("%lu", "%d", position_seqsmap_iterator->second);`
当我注释掉 printf 中的第三行时,它工作正常。使用 printf 打印出 multimap 中的第二个元素对的说明符是什么??
【问题讨论】:
-
你认为这条线到底是做什么的?里面的
"%d"是干什么用的? -
@DavidSchwartz,我有一对
,我以为 %d 会指定 bool 变量 -
那么
"%lu"是干什么用的?