sscanf很好但是std :: scanf不起作用

时间:2014-05-09 04:51:02

标签: c++ std scanf

我正在尝试使用Visual Studio 2010 Pro从文本文件中读取。 sscanf运作良好,但std::scanf没有。

我不知道为什么会这样;请帮帮我。

float b, g, r;
int px = 0;
int py = 0;
std::string strLine;  // some string is.

//below code works very well.
int nRead = sscanf(strLine.c_str(), "%f %f %f %d %d", &b, &g, &r, &px, &py );

//but this does not.
int nRead = std::scanf(strLine.c_str(), "%f %f %f %d %d", &b, &g, &r, &px, &py );

4 个答案:

答案 0 :(得分:3)

从手册页:

   int scanf(const char *format, ...);
   int fscanf(FILE *stream, const char *format, ...);
   int sscanf(const char *str, const char *format, ...);
  • scanf:从stdin读取
  • fscanf:从文件中读取
  • sscanf:从字符串中读取。

调用scanf的方式,要读取的目标字符串被解释为格式规范,而格式spececification用作变量参数之一。

答案 1 :(得分:0)

两种选择:

int nRead = std::sscanf(strLine.c_str(), "%f %f %f %d %d", &b, &g, &r, &px, &py );

int nRead = std::scanf("%f %f %f %d %d", &b, &g, &r, &px, &py );
选择一个。

答案 2 :(得分:0)

您没有正确使用它们。在cppreference.com上查看std::scanfstd::fscanfstd::sscanf的{​​{3}}。

enter image description here

您可能想要使用:

std::sscanf(...)

答案 3 :(得分:0)

std :: scanf用于从stdin中读取内容。

std :: sscanf用于从字符串中读取。

Click the link