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;