C++ c++;fprintf只打印第一个字符串
我尝试了以下代码:C++ c++;fprintf只打印第一个字符串,c++,printf,C++,Printf,我尝试了以下代码: String hi = "hi"; String bye = "bye"; fprintf(fileout, "%d: %s, %s", 10, hi, bye); //fail fprintf(fileout, "%d: %s, %s", 10, "hi", "bye");//ok 但是,这无法将hi-bye写入文本文件。怎么了?fprintf和相关函数都是C函数 您需要一个“C字符串”,它是一个空终止字符数组( char *< /COD>或 char const */
String hi = "hi";
String bye = "bye";
fprintf(fileout, "%d: %s, %s", 10, hi, bye); //fail
fprintf(fileout, "%d: %s, %s", 10, "hi", "bye");//ok
但是,这无法将hi-bye写入文本文件。怎么了?
fprintf
和相关函数都是C函数
您需要一个“C字符串”,它是一个空终止字符数组(<代码> char *< /COD>或<代码> char const */COD>),不是C++字符串(<代码> STD::String )。
见和
虽然C++代码通常使用.
> P> >通常不想在C++中使用<代码> FPROTFTF <代码>和公司。< /P>
fileout << 10 << ": " << hi << ", " << bye;
fileout,但请注意,manhon使用的字符串可能不是std::String
。请注意,大小写不同。manhon,检查您的String
类是否有类似于std::String::c_str()
的成员函数,并尝试使用它。是的,@c45207说明了一个很好的观点。查找返回char*
(或const char*
或char const*
)的函数。感谢帮助。再见,c_str()解决了我的问题。非常感谢你!我使用fprintf是因为我试图将浮点数写入文件,有些是四舍五入到数字,有些是四舍五入到2位小数。@manhon:然后您需要查找std::setw
和std::setprecision
。
fileout << 10 << ": " << hi << ", " << bye;