Experiencia en la depuración de cinvec.h (función de definición de archivo de encabezado de C ++)

¡Escribir un archivo de encabezado es realmente un dolor de cabeza!
¡Definir funciones en archivos de encabezado no es fácil!

Los propósitos de cinvec.h detallados en mi blog sobre C ++, piensen en el número variable de varias líneas de entradas digitales .

El contenido de cinvec.h es el siguiente:

#ifndef CINVEC
#define CINVEC
#include <iostream>
#include <vector>
#include <string>
#include <sstream> // std::istringstream

std::vector<int> cinvec_int(std::string cin_int)
{
    
    
	getline(std::cin, cin_int);
	std::vector<int> vint;
	std::istringstream is(cin_int);
	int i;
	while (is >> i)
		vint.push_back(i);
	return vint;
}

std::vector<double> cinvec_double(std::string cin_double)
{
    
    
	getline(std::cin, cin_double);
	std::vector<double> vdou;
	std::istringstream is(cin_double);
	double i;
	while (is >> i)
		vdou.push_back(i);
	return vdou;
}
#endif // !CINVEC

Al principio, no pudo tener éxito, porque no se pudo determinar el contenido de las dos funciones definidas entre paréntesis. Siempre quise pasar la entrada directamente, así que tomé prestada la forma de getline y usé std :: istream. Sin embargo, el archivo de encabezado estaba bien y se informó el siguiente error en el archivo de origen:

(std :: cin) La función C ++ (declarada en la línea 69 de) no puede ser referenciada - es una función eliminada

Esto es un dolor de cabeza. Búsqueda en línea (incluida la búsqueda dentro de CSDN), pero no puede obtener resultados.
Pero en este momento, abrí mis pensamientos y no necesitaba darle a cin una posición especial como getline. Puede ser similar al "conjunto sin buscar" que se usa comúnmente en matemáticas, establecer un parámetro de cadena intermedio y este parámetro se puede reemplazar directamente en el encabezado con getline. Esta idea está formada.

Nota:

  • 2020.8.28 Llevó más de una hora resolver el problema y mantenerlo en el blog.
  • El otro archivo de encabezado que escribí se detalla en mi blog [Notas] Conversión de base a base en C ++ .

[Ejercicio básico de C ++ (5ª edición)] Programa de ejercicios-Capítulo 5 (Capítulo 5)

Supongo que te gusta

Origin blog.csdn.net/weixin_50012998/article/details/108285151
Recomendado
Clasificación