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()四舍五入。