草庐IT

c++ - 在 32 位和 64 位程序中使用 std::chrono::duration::rep 和 printf

有这段代码:#include#includeintmain(){autod=std::chrono::microseconds(1).count();printf("%lld",d);return0;}在64位模式下编译时,会出现警告:main.cpp:Infunction‘intmain()’:main.cpp:7:19:warning:format‘%lld’expectsargumentoftype‘longlongint’,butargument2hastype‘longint’[-Wformat=]printf("%lld",d);^在32位模式(使用-m32标志)下编译时不

c++ - 什么时候使用 printf/scanf vs cout/cin?

我正在使用MinGW的g++测试我在网上找到的一些片段。这是C++编译器……为什么它能正确编译C……为什么人们将C和C++混为一谈。具体问题是:可以吗?同时使用C和C++并在g++下编译。如果答案是肯定的,这会让我的生活变得轻松,因为我不必修改代码。奇怪的是......为了让一些C++工作,特别是当将字符串传递给ifstream构造函数时,它需要一个C类型的字符串......我的猜测是,因为C++有时依赖于C构造,所以可以将两种语言一起编写。但是作为风格问题,您应该选择cout/cin或printf/scanf。 最佳答案 有一些奇

c++ - 为什么 printf 不格式化 unicode 参数?

当使用printf将双字节字符串格式化为单字节字符串时:printf("%ls\n",L"s:\\яшертыHello");//%lsforawidestring(%svariesmeaningdependingontheproject'sunicodesettings).很明显,有些字符不能表示为ascii字符,所以有时我会看到双字节字符变成“?”的行为。标记字符。但是,这似乎取决于特定的字符。对于上面的printf,输出是:s:\我希望我能得到这样的东西:s:\??????Hello恐怕我已经失去了这个例子,但我认为当一个字符串遇到unicode字符时,将第一个字符串替换为“?”

c++ - 如何使用 fprintf/printf 打印破折号或点?

截至目前,我正在使用下面的行打印不带点的fprintf(stdout,"%-40s[%d]",tag,data);我希望输出如下所示,Numberofcards..................................[500]Fixedprizeamount[inwholedollars]............[10]Isthisahighwinnerprize?.....................[yes]如何使用fprintf/printf打印出破折号或点号? 最佳答案 更快的方法:如果你需要的最大填充量是事

C++: "float"的 printf() 格式规范是什么?

C++:float的printf()格式规范是什么?(视觉C++)以前我是用%g来表示float,用%lg来表示double。看起来规范已更改,float未定义,double为%g。我正在打印出内存中的一些位,因此无法进行转换。有没有一种方法可以使用printf()打印出float值?更新:此代码是为对嵌入式系统上使用的通用C++库进行单元测试而编写的。这是我必须做的才能让float工作。代码在模板函数中:templateErrortestMatrixT(){...这是一个代码片段:if(typeid(Ttyp)==typeid(float)){float64c=*(float32*)

c++ - Posix 是否为 printf/scanf 提供格式字符串宏?

C中的printf和scanf函数族使用少量与基本数据类型相对应的原始格式说明符–%d对于int,%llu对于unsignedlonglongint等但是,有大量的标准化类型别名可供实践使用,例如int32fast_t,而我们不能也不应该知道底层的基本类型。对于stdint.h中的别名,幸运的是C标准在inttypes.hPRI32.是否有一组类似的Posix宏?Posix有大量的不透明类型,如ssize_t、pid_t、rlim_t、suseconds_t等,它们都是基于基本的整数类型。如何在格式字符串中可移植地使用这些类型? 最佳答案

c++ - 如何将 printf 输出重定向回代码?

我正在编写一个小的c++应用程序来包装opencvhaar训练函数(即cvCreateTreeCascadeClassifier)。该函数向控制台抛出一整套输出,我希望解析此输出,以便我可以在我的代码中填充各种变量。我希望使用的函数不是实际openCV库的一部分;相反,它必须作为项目的一部分使用我的代码构建。该函数的所有输出均通过printf。问题:是否可以在printf语句在控制台结束之前拦截它们?我已经设法使用freopen重定向它们,但这似乎有点笨拙,因为我需要解析文件,然后在函数调用完成后将其删除。此外,该函数可能会运行数小时(甚至可能数周!),因此如果文件不断被附加,文件的大

c++ - OS X 上的 printf 和 %llu 对比 %lu

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:howtoprintfuint64_t?为什么在我的64位Mac上(我使用的是Clang)uint64_t类型是unsignedlonglong而在64位Ubuntu上是uint64_t类型是unsignedlong?这让我很难让我的printf调用在两种环境下都不给出编译器警告(或者甚至不工作)。我可以尝试使用宏来尝试选择正确的字符串(#defineLU%llu或%lu,并且在这个过程稍微丑化了printf字符串)但是在Mac上我有一个64位字长(所以_LP64将被定义并且UINTPTR_MAX!=0xfff

c++ - 将零参数包传递给 printf

我创建了一个具有可变参数模板方法的类。此方法调用printf函数。将零参数传递给该方法时,我收到gcc的编译警告:warning:formatnotastringliteralandnoformatarguments[-Wformat-security]一个简化的类示例是:classprinter{std::mapstr;public:printer(){str[0]="null\n";str[1]="%4d\n";str[2]="%4d%4d\n";str[3]="%4d%4d\n%4d\n";}templatevoidprint(Args...args){printf(str[si

c++ 将 printf 与 wprintf 混合(或将 cout 与 wcout 混合)

我知道您不应该将打印与printf,cout和wprintf,wcout混合使用,但是很难找到一个好的答案,为什么以及是否可以绕过它。问题是我使用了一个用printf打印的外部库,而我自己使用了wcout。如果我做一个简单的例子,它工作正常,但从我的完整应用程序来看,它根本不打印printf语句。如果这真的是一个限制,那么就会有许多库无法与广泛的打印应用程序一起工作。我们非常欢迎对此有任何见解。更新:我把它归结为:#include#include#include#include#includeintmain(){char*buf;std::wcout所以我想这可能是冲水问题,但我还是觉