我已将一个 printf 格式的字符串传递给一个函数,并尝试使用 sscanf() 来分隔该字符串的内容。但以下是使用此功能的问题。 我将该函数称为 follws:
int var = -1;
ostringstream ossi;
ossi << "myContent";
std::string detailString = "my first line \n
the secon dline content is alos present \n
also we are also get s sdjhf sf"
myFunction("What value: %d \n My content: %s \n Detail Content: %s", var, ossi.str().c_str(), detailString.c_str());
实现如下:
void myFunction(const char * format, ...)
{
int var;
char myContent[10000];
char detailContent[50000];
if (sscanf(myString, "What value: %d \n My content: %s \n Detail Content: %s", &var, cmyContent, detailContent) == 3)
{
std::cout<<" #### "<<std::endl;
std::cout<<"var value is :"<<var<<std::endl;
std::cout<<"My content is :"<<myContent<<std::endl;
std::cout<<"detailContent is :"<<detailContent<<std::endl;
std::cout<<" #### "<<std::endl;
}
}
有了上面的函数,我的输出如下:
var value is : -1
My content is : myContent
detailContent is : my first line
它不是获取第三个参数的全部内容(即 detailContent),而是只获取第一行。 获取完整字符串内容的任何建议。 提前致谢。
最佳答案
C 和 C++ 中的可变参数并不像您认为的那样工作。参见 this link有关如何使用可变参数的教程。
或者查看stdarg
的手册页。
关于c++ - 如何获取字符串的总内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8118834/