⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read_data.cc

📁 早期freebsd实现
💻 CC
字号:
#include "read_data.h"// READ_DATA reads ascii (or binary) data from an istream of// coordinates and labels.  It passes back the array of points (x, y,// and label) containing the data.     voidread_data (istream& in, char* in_filename, pointXPlex &pplex,	   int auto_abscissa, double x_start,	   double delta_x, int &symbol_number,	   data_type input_data, int switch_symbols){  char next_char;		// next character to be read  point p;			// the point we are currently reading in.  p.label = (char *) 0;		// binary files contain no labels.  double prev_x = -HUGE;	// the previous x value.    if (auto_abscissa)    x_start -= delta_x;    if (input_data == ASCII)    {				// input contains ascii data      while (in.good ())	{	  if (auto_abscissa)	    p.x = x_start = x_start + delta_x;	  else	    in >> p.x >> WS;	  if (switch_symbols && (p.x < prev_x))	    symbol_number++;	  prev_x = p.x;	  	  in >> p.y;	  if (!in.good ())		// if we read x but not y complain.	    {	      char *input_line;	      in.clear ();	      in.gets (&input_line);	      // if the input contains one coordinate per line	      // you win here --- emacs can find the source	      // line from this error message.	      cerr << in_filename << ":" << 2 + pplex.high()		<< ": unable to read the" sp 2 + pplex.high()		  << ((2 + pplex.high() == 1) ? "st" : "th")		  << " y coordiate.\n";	      if (input_line)		if (strlen (input_line))		    cerr << in_filename << ":" << 2 + pplex.high()		    << ": unexpected `" << input_line << "'\n";	      break;	    }	  in >> WS;			// skip white space after y coordinate	  p.label = (char *) 0;			// by default there is no label	  in.get (next_char);				// look ahead for a label	  if (in.good ())	    {	      in.putback (next_char);	      if (!isdigit (next_char)	// if a lable is found		  && (next_char != '.')		  && (next_char != '+')		  && (next_char != '-'))		{		  in.gets (&p.label);		// store it with x and y		}	      in >> WS;			// skip white space after label	    }	  p.symbol = symbol_number;	  pplex.add_high (p);	}      return;    }  if (input_data == DOUBLE)    {				// input contains binary double precision      while (in.good ())	{	  if (auto_abscissa)	    p.x = x_start = x_start + delta_x;	  else	    {	      in.read (&p.x, sizeof(p.x));	      if (switch_symbols && (p.x < prev_x))		symbol_number++;	      prev_x = p.x;	    }	  in.read (&p.y, sizeof(p.y));	  p.symbol = symbol_number;	  if (in.good ())	    pplex.add_high (p);	}    }  if (input_data == INT)    {				// input contains binary integers      int i;      while (in.good ())	{	  if (auto_abscissa)	    p.x = x_start = x_start + delta_x;	  else	    {	      in.read (&i, sizeof(i));	      p.x = i;	      if (switch_symbols && (p.x < prev_x))		symbol_number++;	      prev_x = p.x;	    }	  in.read (&p.y, sizeof(p.y));	  p.symbol = symbol_number;	  if (in.good ())	    pplex.add_high (p);	}    }  return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -