Yo realmente no encuentro ninguna respuesta que cerrar…

de la manera opuesta es bastante sencilla, como la de str[0]

Pero necesito a emitir sólo 1 char a string…

como este:

char c = 34;
string(1,c);
//this doesn't work, the string is always empty.

string s(c);
//also doesn't work.

boost::lexical_cast<string>((int)c);

//also return null
  • No se puede reproducir: coliru.stacked-crooked.com/…
  • ¿Qué te hace pensar string(1, c) no funciona? Esa es la manera correcta de hacerlo.
  • Compilador que se está utilizando? ¿Qué medio ambiente. Tal vez este es un error del compilador.
  • libc++abi.dylib: terminar llamado lanzar una excepción
  • no es un error de compilación….Pero el error de tiempo de ejecución….
  • ¿El programa completo yo vinculados a ejecutar por su cuenta?
  • El error es, probablemente, en alguna otra parte del programa. Favor de poner un auto-contenida, reproducible ejemplo que muestra el erro de manera que podamos ayudarle a averiguar lo que está mal.
  • La mirada en esta demo. Su primera cadena de la creación de instancias que debe trabajar.

InformationsquelleAutor weeo | 2013-06-19

2 Comentarios

  1. 170

    Todos

    string s(1, c); std::cout << s << std::endl;

    y

    std::cout << string(1, c) << std::endl;

    y

    string s; s.push_back(c); std::cout << s << std::endl;

    trabajó para mí.

    • El camino más corto es: string s = «» + c;
    • NO! 1. las comillas que están utilizando no son válidas en C++; 2. incluso si significaba s = "" + c es sólo UB porque no significa «concatenar la cadena vacía con el carácter c«, que significa «el puntero a algunos de copia de una cadena vacía, avanzada por el valor numérico de c (que definitivamente no es lo que quería); 3. si usted quiere s = ""s + c, es stilll más de s{1, c}… (y tendría que escribir using std::literals; en algún lugar…
    • Lo siento, quise decir: string s = string() + ‘a’;
    • Puedo quitar la r upvote en ese mal comentario…
  2. 8

    Sinceramente, pienso que el método de fundición a la funcionaría bien. Ya que no puede probar stringstream. Un ejemplo es el siguiente:

    #include <sstream>
    #include <string>
    stringstream ss;
    string target;
    char mychar='a';
    ss << mychar;
    ss >> target;
    • No creo que el hecho de que este particular constructor de cadena que no funcione y no tiene nada que ver con el problema real.
    • Probablemente en lo cierto, pero pensé que iba a ofrecer la respuesta fácil 😛

Dejar respuesta

Please enter your comment!
Please enter your name here