如何获得字符串的总内容
How to get total content of string?
我已经将一个printf格式的字符串传递给一个函数,并尝试通过使用sscanf()来分离该字符串的内容。但下面是使用这个函数的问题。我以如下方式调用了这个函数:
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
而不是获取第三个参数(i)的全部内容。(例如detailContent),它只得到第一行。对于获取字符串的完整内容有什么建议吗?提前感谢。
C和c++中的变量参数并不像你想象的那样工作。有关如何使用变量参数的教程,请参阅此链接。
或者查看stdarg
的手册页
我猜你想做的是:
char buf[1024] = {};
sprintf(buf, "What value: %d n My content: %s n Detail Content: %s", var, ossi.str().c_str(), detailString.c_str());
myFunction(buf); // not using variable arguments at all
即使这样,函数也可能不会做你想做的事情。为了得到更好的答案,请写下你想要达到的目标。
注意:不鼓励在c++中使用sprintf
和sscanf
,因为它们不安全
相关文章:
- 未获得字符串中的预期输出
- C++:从文件中读取字符串和整数,并获得最大数字
- 获得'\n'来自字符串
- 提升,从字符串问题中获得时间
- 如何获得字符串的特定实例,该实例在字符串中多次重复
- 我如何在QT中获得字符串的一部分
- 如何在C 中获得字符串的最后一个字符
- 如何获得字符串的所有字符
- 无法在C Visual Studio中获得字符串的大小
- 如何获得字符串输出的宽度
- 无法获得字符串:: size_type int做touper
- 如何获得字符串和int的用户输入
- 在C++中,有没有获得字符串第一个字符的最佳实践
- 通过动态规划获得字符串的所有子集-编程竞赛,面试
- 如何获得字符串的总内容
- 如何在c++中获得字符串的哈希码
- 如何使用字符串和整数获得字符串
- 如何在c++中获得字符串的最后一个字符
- 如何以像素(/逻辑单位)获得字符串的宽度
- 如何获得字符串中的单词数