2014-05-09 7 views
-7

Я пытаюсь читать из текстового файла с помощью Visual Studio 2010 Pro. sscanf хорошо работает, но std::scanf нет.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); 
+1

как о 'станд :: sscanf'? – Adam

+0

Ох ~ Я глуп. спасибо всем. – user1923661

ответ

3

На странице руководства:

int scanf(const char *format, ...); 
    int fscanf(FILE *stream, const char *format, ...); 
    int sscanf(const char *str, const char *format, ...); 
  • зсапЕ: читать из стандартного ввода
  • fscanf: читать ФАЙЛ
  • sscanf: чтение из строки.

Способ, которым вы вызывали scanf, предназначенная строка для чтения интерпретируется как спецификация формата, в то время как формат spececification используется как один из аргументов переменной.

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); 

выбрать один.

0

Вы не используете их правильно. Выезд the documentation за std::scanf, std::fscanf и std::sscanf на cppreference.com.

enter image description here

Вы, вероятно, хотите использовать:

std::sscanf(...) 
0

станд :: зсапЕ используется для чтения содержимого из стандартного ввода.

std :: sscanf используется для чтения из строки.

Click the link

Смежные вопросы