|
1012
|
Programación / Programación C/C++ / Re: ¿Comó usar strtok con listas de la biblioteca <vector>?
|
en: 16 Septiembre 2016, 14:41 pm
|
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: #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. #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
|
Programación / Programación C/C++ / Re: Ayuda constante de Kapreker :c
|
en: 15 Septiembre 2016, 23:59 pm
|
Me parece algo "mejor" hecho este: https://sites.google.com/site/programmingwithsantiago/kaprekars-constant-using-c-languageAdemá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 / Programación C/C++ / Re: [C++]Cpr - cURL para humanos
|
en: 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. main.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
|
|
|
1017
|
Programación / Programación C/C++ / Re: [C++]Cpr - cURL para humanos
|
en: 15 Septiembre 2016, 17:46 pm
|
error: #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 / Programación C/C++ / Re: [C++]Cpr - cURL para humanos
|
en: 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.
|
|
|
1020
|
Programación / Programación C/C++ / Re: Validando peticion GET manualemente
|
en: 13 Septiembre 2016, 23:34 pm
|
strcpy(temp ,"GET /LALALA/xD.txt?q=xD&XD HTTP/1.1");
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.
|
|
|
|
|
|
|