C++ c++;参数数目可变的函数执行错误';字符串'-类型转换

C++ c++;参数数目可变的函数执行错误';字符串'-类型转换,c++,C++,我遇到了这样一个问题:我写了一些代码,当我试图格式化一些数据(特别是字符串)时,我得到了奇怪的结果 #include <iostream> // std::cout, std::endl #include <string.h> #include <vector> #include <cstdarg> #include <sstream> using namespace std; void va_cout(string for

我遇到了这样一个问题:我写了一些代码,当我试图格式化一些数据(特别是字符串)时,我得到了奇怪的结果

#include <iostream>     // std::cout, std::endl
#include <string.h>
#include <vector>
#include <cstdarg>
#include <sstream>

using namespace std;

void va_cout(string format, ...)
{
    vector<char> buf(256);
    va_list args;
    va_start(args, format);
    vsnprintf_s(&buf[0], buf.size(), buf.size() + strlen(format.c_str()), format.c_str(), args);
    va_end(args);
    cout << endl << "apply va_cout(""%s"", s) = " << &buf[0] << endl;
}

int main() {
    string s("myString");
    cout << endl << s << endl;
    va_cout("%s", s);
    va_cout("%s", s.c_str());
    return 0;
}
#包括//std::cout,std::endl
#包括
#包括
#包括
#包括
使用名称空间std;
无效值(字符串格式,…)
{
载体buf(256);
va_列表参数;
va_开始(参数,格式);
vsnprintf_s(&buf[0],buf.size(),buf.size()+strlen(format.c_str()),format.c_str(),args);
va_端(args);

cout
%s
只能与
char*
const char*
一起使用。您传递的是
std::string
并将其视为
vsnprintf\u s()
中的
char*
字符。没有从
std::string
char*
的隐式转换。您需要调用
std::string::c\u str()

谢谢。我正在尝试理解如何使用将std::string::c_str()四舍五入。