es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

sobrecargando el operador de extracción para inicializar un std::array

Estoy leyendo datos de un archivo del tipo (0 0 0) que me gustaría guardar en un std::array.

Cuando compilo el código, obtengo un error que dice que el operador >> no está sobrecargado.

Tengo:

#include <array>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <string>


int main(int argCount, char *args[])
{

    std::string tst ("(0 0 0)");

    std::istringstream is (tst);

    std::array<double, 3=""> myVec; 

    is >> myVec;

    return 0;
}

Después, definí la sobrecarga del operador >> para recolectar los datos de la siguiente manera:

template <typename std::size_t="" n="">
std::istringstream& operator>> (std::istringstream& is, std::array<double, n="">& v)
{
    char c1 ;

    is >> c1;

    if(c1 != '(')
    {
        is.setstate(std::ios::failbit);
    }

    for (unsigned int i = 0; i < v.size(); i++)
    {
        is >> v[i];
    }

    is >> c1;

    if(c1 != ')')
    {
        is.setstate(std::ios::failbit);
    }

    return is;
}

¿Es esta una solución correcta para sobrecargar el operador de extracción?</double,></double,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, no puedo evaluar la corrección de la solución ya que requiere experiencia en conocimientos del dominio. Sin embargo, basado en el código proporcionado, parece ser una implementación válida de sobrecarga del operador de extracción para leer datos en un std::array. Verifica el formato correcto de los datos de entrada y asigna cada valor al array. Es necesario asegurarse de que el parámetro de plantilla N coincida con el tamaño del array para garantizar una inicialización correcta.

Comments are closed.