Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#1011
Programación C/C++ / Re: [C++]Cpr - cURL para humanos
16 Septiembre 2016, 22:15 PM
Los .cpp tambien los tienes que meter al proyecto.
#1012
strtok es una función de C para trabajar con cadenas de caracteres (char*).

Lo que puedes hacer, es utilizar la función "find" de la librería algorithm:

Código (cpp) [Seleccionar]
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;


int main(){
vector<string> vec = {"a", "b", "ab", "b", "c", "ab", "d", "e"};
auto tokenIterator = find(vec.begin(), vec.end(), "ab");
if(tokenIterator == vec.end()){
// No encontrado
}else{
vector<string> temp(vec.begin(), tokenIterator);
for(string& str : temp)
cout << str << endl;
}
}


http://www.cplusplus.com/reference/algorithm/find/


También puedes usar "find_first_of", en caso de que tengas varios tokens.

Código (cpp) [Seleccionar]
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;


int main(){
vector<string> vec = {"a", "b", "ab", "b", "c", "ab", "d", "e"};
vector<string> tokens = {"ab", "ac"};

auto tokenIterator = find_first_of(vec.begin(), vec.end(),
                                      tokens.begin(), tokens.end());
if(tokenIterator == vec.end()){
// No encontrado
}else{
vector<string> temp(vec.begin(), tokenIterator);
for(string& str : temp)
cout << str << endl;
}
}


http://www.cplusplus.com/reference/algorithm/find_first_of/



Como dato, en la STL de C++, todos los contenedores trabajan con iteradores, y las funciones para trabajar con iteradores, también suelen hacerlo.
#1013
Me parece algo "mejor" hecho este: https://sites.google.com/site/programmingwithsantiago/kaprekars-constant-using-c-language
Además, tiene comentarios y partes bastante bien definidas.

Lo único, 2 cosas:
-Tiene un error. La línea 15 hay que cambiarla por: int y=0, z;
-Es un bucle que hace el procedimiento con cada número del 1000 al 9999 (excepto los de 4 cifras iguales).
Es un código algo guarro, pero bueno.

En cualquier caso, lo mejor es que lo intentes hacer tú. No sé qué nivel tienes, pero si vas paso a paso, irás viendo qué problemas tienes, e incluso puedes ponerlos por aquí para resolverlos. El procedimiento tiene unos pasos bastante simples. Lo más difícil: ordenar las cifras. Si nunca hiciste algo sobre ordenar, es también un buen comienzo.
#1014
Programación C/C++ / Re: [C++]Cpr - cURL para humanos
15 Septiembre 2016, 22:57 PM
Estás compilando el main solo.
Te decía que hicieras un proyecto, porque Code::Blocks (como casi cualquier IDE) se encarga de ver qué archivos tiene que compilar y en qué orden.

Si quieres utilizar una librería que no está compilada, tienes que compilarla. Para ello, tienes que compilar por separado cada archivo .cpp de la librería. Esas compilaciones, generarán un archivo de código objeto (generalmente .o). Luego, hay que enlazar todos estos archivos .o (incluido el del main) para generar el archivo ejecutable.


Los errores que tienes indican que hay funciones que se nombran, pero cuyo código no se encuentra.
Citarmain.cpp:(.text+0x60): referencia a `cpr::Parameters::Parameters(std::initializer_list<cpr::Parameter> const&)' sin definir
El constructor Parameters se utiliza, pero no está compilado en ningún lugar. Si estuviera el .cpp compilado, encontraría esa función en el .o.

Tienes varias opciones. Una es, crear un proyecto con Code::Blocks, meter todos los archivos, y dejar que se encargue Code::Blocks. La otra, es compilar cada archivo .cpp de la librería.
Para ello, en resumen:
lib1.cpp, lib2.cpp, main.cpp

g++ -std=c++11 -c lib1.cpp -o lib1.o
g++ -std=c++11 -c lib2.cpp -o lib2.o
g++ -std=c++11 -c main.cpp -o main.o
g++ lib1.o lib2.o main.o -o main.exe
#1015
No entendí muy bien. Cuando llamas a CancelAsync, estableces el miembro CancellationPending a true. Dentro del código del worker, deberás comprobar la variable.

https://msdn.microsoft.com/es-es/library/system.componentmodel.backgroundworker.cancelasync(v=vs.110).aspx
#1016
Ponle al final GROUP BY id_usuario.
En principio, así debería elegir solo el primero paracada id.

DISTINCT elimina filas repetidas. Filas completas.
#1017
Programación C/C++ / Re: [C++]Cpr - cURL para humanos
15 Septiembre 2016, 17:46 PM
Citarerror: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

Pon "-std=c++11". No sé qué IDE utilizas. En Code::Blocks, irías a "Opciones -> Compilador" y ahí en la lista de checkboxes, marcarías "Have g++ follow the C++11 ISO C++ language standar [-std=c++11]"

Y bueno, "un error muy grande". Lee los errores y fíjate qué dicen xD
Sino, pues eso, postea los siguientes errores.
#1018
Programación C/C++ / Re: [C++]Cpr - cURL para humanos
15 Septiembre 2016, 16:51 PM
Sin make, puedes simplemente crear un proyecto con otro IDE (Code::Blocks por ejemplo), meter los archvios cpp y h en él, y compilar.
No debería darte mucho problema. Si te los da, pon por aquí.


Al proyecto puedes meterle directamente tu main. Si quieres tener las librerías como tales, basta que cojas los archvios .o que suele generar el IDE.
#1019
Comentaste lo que no era:
// contentType: "application/json; charset=utf-8",
dataType: "json",

Tienes que quitar el dataType.

contentType es el contenido que tú le envías.
dataType es lo que esperas recibir del servidor. Salvo que realmente lo necesites, no lo pongas. Que yo sepa, AJAX lo suele detectar automáticamente.
#1020
Cita de: AlbertoBSD en 13 Septiembre 2016, 20:36 PM

strcpy(temp,"GET /LALALA/xD.txt?q=xD&XD HTTP/1.1");
type = strtok(temp," ");
resource = strtok(NULL," ");
protocol = strtok(NULL," ");
extra = strtok(NULL," ");


Como detalle, yo comprobaría que las 3 partes son correctas. Que no tengan caracteres inválidos (como saltos de línea o retornos de carro), y que tanto el "type" como el "protocol" sean válidos; aunque supongo que eso ya lo tendrás en cuenta en el futuro xD

Oh, y yo dejaría de usar ese strtok cuanto antes. Si es un servidor, es probable que pretendas hacerlo multi-thread.