Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка в коде при присваивании значения переменной, ошибка кода значение переменной 
V
    Опции темы
kshyms
Дата 22.11.2011, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

   
#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string>
#include <iostream>
#include "russia.h"
#include <math.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int main(){
     char q1; 
      cin >> q1;
    
    char* gParam = g1;
  cout <<gParam<<endl; 
   _getch();
  return 0;
}

как правильно записать 23 строку?

Это сообщение отредактировал(а) kshyms - 22.11.2011, 21:14
PM MAIL WWW Skype   Вверх
bsa
Дата 22.11.2011, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kshyms, зависит от того, что ты получить хочешь.
указателю (коим является gParam) необходимо присваивать адрес. Адрес переменной можно получить применив оператор &:
Код
char *gParam = &g1;
Но дальше ты пытаешься вывести строку, находящуюся по адресу переменной. А там всего один символ! 
PM   Вверх
kshyms
Дата 22.11.2011, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



     
Код

q1[1][50];

а так уже лучше?

Это сообщение отредактировал(а) kshyms - 22.11.2011, 22:12
PM MAIL WWW Skype   Вверх
bsa
Дата 22.11.2011, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  22.11.2011,  23:05 Найти цитируемый пост)
а так уже лучше? 
значительно. жаль, что ты не особо понимаешь суть изменений, а пытаешься их делать наугад.

PM   Вверх
kshyms
Дата 22.11.2011, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



bsa, А как увеличить вывод значения переменной со множеством символов?  
PM MAIL WWW Skype   Вверх
kshyms
Дата 22.11.2011, 23:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



оказывается здесь лучше использовать 
Код

string q1;


Это сообщение отредактировал(а) kshyms - 22.11.2011, 23:19
PM MAIL WWW Skype   Вверх
bsa
Дата 23.11.2011, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



молодец. А для чтения строки лучше использовать std::getline(std::cin, q1); Так как в этом случае можно будет вводить даже целы предложения, а не только слова и числа.
PM   Вверх
kshyms
  Дата 23.11.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string>
#include <iostream>
#include <math.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
string q1; 
std::getline(std::cin, q1); 
cout <<q1<<endl; 
string s;
s="http://мойсайт.ru/search?text=";
cout << s.append(q1);
const char* gApp = &q1;
const char* gParam = "";
ShellExecute(NULL, "open", gApp , gParam, NULL, SW_SHOW);
return 0;
}

а как вам кажется это развитие мысли перспективно и как это воплотить?


Это сообщение отредактировал(а) kshyms - 23.11.2011, 20:43
PM MAIL WWW Skype   Вверх
bsa
Дата 23.11.2011, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



убрать строки 25-27. Вместо переменной gApp в строке 28 использовать q1.c_str(), а gParam заменить на s.c_str();
PM   Вверх
xvr
Дата 24.11.2011, 13:10 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kshyms @  22.11.2011,  21:13 Найти цитируемый пост)
как правильно записать 23 строку?

Я бы начал со строк 1-17. Что то там явно лишнее, а некоторые из этого 'что то' там лишние по нескольку раз  smile 

PM MAIL   Вверх
kshyms
Дата 24.11.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string>
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
string q1; 
string s;
std::getline(std::cin, q1);
s="http://очень популярныйсайт.ru/search?query=";

ShellExecute (NULL, "open",  s.c_str(), q1.c_str(),   NULL, SW_SHOW);
_getch();
return 0;
}

задает пустой запрос. а как исправить
PM MAIL WWW Skype   Вверх
bsa
Дата 24.11.2011, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);

PM   Вверх
kshyms
Дата 24.11.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



bsa, Голова!!! Профи!!!
PM MAIL WWW Skype   Вверх
bsa
Дата 24.11.2011, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kshyms, просто я умею пользоваться инструментарием. Ты бы тоже почитал описание std::string.
PM   Вверх
kshyms
  Дата 25.11.2011, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



bsa,  кое какой результат уже есть только проблемы с кодировкой русского шрифта

Это сообщение отредактировал(а) kshyms - 20.1.2012, 19:31
PM MAIL WWW Skype   Вверх
kshyms
  Дата 26.11.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

string q1; 
std::getline(std::cin, q1);
q1 = iconv (q1 "DOS866" , q1 "UTF-8", q1 str);


Может так лучше?

Это сообщение отредактировал(а) kshyms - 26.11.2011, 15:44
PM MAIL WWW Skype   Вверх
xvr
Дата 26.11.2011, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kshyms @  26.11.2011,  15:03 Найти цитируемый пост)
Может так лучше?

Компилятор это не поймет  smile 
PM MAIL   Вверх
kshyms
Дата 26.11.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



 smile 
Код

q1 = iconv ("DOS866" ,  "UTF-8", q1);


Это сообщение отредактировал(а) kshyms - 26.11.2011, 18:05
PM MAIL WWW Skype   Вверх
kshyms
  Дата 27.11.2011, 05:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Я думаю, исходя из того , что я прочел: "Лучше строку русских букв транслировать в бинарный код и всего делов - то...". 
например 
setlocale(LC_ALL,"ru_RU.CP1251");
"Привет" 
//  в Unicode
"%EF%F0%E8%E2%E5%F2";


Это сообщение отредактировал(а) kshyms - 27.11.2011, 11:17
PM MAIL WWW Skype   Вверх
xvr
Дата 27.11.2011, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kshyms @  27.11.2011,  05:13 Найти цитируемый пост)
Я думаю, исходя из того , что я прочел: 

Читайте дальше - это не Unicode, а ESC кодирование в URL (что не имеет ничего общего с Unicode'ом)

PM MAIL   Вверх
kshyms
Дата 28.11.2011, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код


#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include "russia.h"
#include <fstream>
#include <windows.h>

using namespace std;
int main ()
{
int wctomb(char *out, wchar_t in);
setlocale(LC_ALL,"CP1251");
    int simple_function(void* p, long size); // прототип
 int  a1; // объявление двух переменных a и b целого типа данных. 
string q1; 
std::getline(std::cin, q1);
for (size_t i = 0; i < q1.size(); i++)
if (q1[i] == 'Ў') q1[i] = '%D0%B0';
 _getch();
  return 0;
}

Уже почти близко к решению
PM MAIL WWW Skype   Вверх
bsa
Дата 29.11.2011, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Зачем тебе все эти хидеры?!? Ты используешь только <clocale>, <iostream>, <cstring> и <string>.
Зачем объявляешь функции внутри main()? Почему нельзя это сделать перед? Тем более, что wctomb - это стандартная. (подчеркивание только добавь в начало).
Код
if (q1[i] == 'Ў') q1[i] = '%D0%B0';
Не скомпилируется.
Код
std::string escapeString(const std::string &url)
{
   std::stringstream ret;
   for(std::string::const_iterator it = url.begin(), end = url.end(); it != end; ++it) {
       const unsigned char c = *it;
       if ((c > 127) || (c < 0x21) || (c == '%')) //не экранируются символы ASCII, за исключением пробела и процента
           ret << '%' << std::hex << std::setw(2) << std::setfill('0') << (int)c << std::setw(0);
       else
           ret << (char)c;
   }
   return ret.str();
}

PM   Вверх
kshyms
Дата 29.11.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



bsa, 
Код

#include <clocale>
#include <iostream>
#include <cstring> 
#include <string>
#include <stdlib.h>
using namespace std;
int main ()
{
string q1; 
std::getline(std::cin, q1);  

std::string escapeString(const std::string &url)
 &url= q1;  
{
   std::stringstream ret;
   for(std::string::const_iterator it = url.begin(), end = url.end(); it != end; ++it) {
       const unsigned char c = *it;
       if ((c > 127) || (c < 0x21) || (c == '%')) //не экранируются символы ASCII, за исключением пробела и процента
           ret << '%' << std::hex << std::setw(2) << std::setfill('0') << (int)c << std::setw(0);
       else
           ret << (char)c;
   }
   return ret.str();
}

код не компилируется 

Это сообщение отредактировал(а) kshyms - 29.11.2011, 15:37
PM MAIL WWW Skype   Вверх
bsa
Дата 29.11.2011, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  29.11.2011,  16:26 Найти цитируемый пост)
код не компилируется 

сочувствую. ты сам привнес ошибки. если ты отформатируешь код, то найдешь синтаксические ошибки. а еще нужно подключить хидер <sstream>.
PM   Вверх
kshyms
Дата 30.11.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <fstream>
#include <ctype.h> 
#include <conio.h> 
#include <string.h>
#include <windows.h> 
using namespace std;
int main ()
{
std::string str[]= "привет";

str = tolower str;//конвертация буквы к нижнему регистру если это буква и она в верхнем регистре*
char c;
  while (str[i])
  {
    c=str[i];
    putchar (tolower(c));
    i++;
  }
str = toascii str;//конвертация в символ набора ASCII
//std::replace(str.begin(), str.end(), ':', ' ');
std::replace(str.begin(), str.end(), '\430', '%D0%B0');
std::replace(str.begin(), str.end(), '\431', '%D0%B1');
std::replace(str.begin(), str.end(), '\432', '%D0%B2');
std::replace(str.begin(), str.end(), '\433', '%D0%B3');
std::replace(str.begin(), str.end(), '\434', '%D0%B4');
std::replace(str.begin(), str.end(), '\435', '%D0%B5');
std::replace(str.begin(), str.end(), '\436', '%D0%B6');
std::replace(str.begin(), str.end(), '\437', '%D0%B7');
std::replace(str.begin(), str.end(), '\438', '%D0%B8');
std::replace(str.begin(), str.end(), '\439', '%D0%B9');
std::replace(str.begin(), str.end(), '\43A', '%D0%BA');
std::replace(str.begin(), str.end(), '\43B', '%D0%BB');
std::replace(str.begin(), str.end(), '\43C', '%D0%BC');
std::replace(str.begin(), str.end(), '\43D', '%D0%BD');
std::replace(str.begin(), str.end(), '\43E', '%EE');
std::replace(str.begin(), str.end(), '\43F', '%EF');
std::replace(str.begin(), str.end(), '\440', '%F0');
std::replace(str.begin(), str.end(), '\441', '%F1');
std::replace(str.begin(), str.end(), '\442', '%D1%82');
std::replace(str.begin(), str.end(), '\443', '%D1%83');
std::replace(str.begin(), str.end(), '\444', '%D1%84');
std::replace(str.begin(), str.end(), '\445', '%D1%84');
std::replace(str.begin(), str.end(), '\446', '%D1%86');
std::replace(str.begin(), str.end(), '\447', '%D1%87');
std::replace(str.begin(), str.end(), '\448', '%D1%88');
std::replace(str.begin(), str.end(), '\449', '%D1%89');
std::replace(str.begin(), str.end(), '\44A', '%D1%8A');
std::replace(str.begin(), str.end(), '\44B', '%D1%8B');
std::replace(str.begin(), str.end(), '\44C', '%D1%8C');
std::replace(str.begin(), str.end(), '\44D', '%D1%8D');
std::replace(str.begin(), str.end(), '\44E', '%D1%8E');
std::replace(str.begin(), str.end(), '\44F', '%D1%8F');
     cout << str;
     system("PAUSE");
      return 0;
}




По идее должны заменяться  русские буквы формата  MS-Dos на коды URL?

Это сообщение отредактировал(а) kshyms - 30.11.2011, 16:32
PM MAIL WWW Skype   Вверх
bsa
Дата 30.11.2011, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  30.11.2011,  17:02 Найти цитируемый пост)
По идее должны заменяться  русские буквы формата  MS-Dos на коды URL?

По чьей идее?
А по-моему не должны. Вообще даже скомпилироваться не должно. Так как в апострофах у тебя должен быть один символ, а не 6.
Код
#include <sstream>
#include <iomanip>
#include <string>

std::string escapeString(const std::string &url)
{
   std::stringstream ret;
   for(std::string::const_iterator it = url.begin(), end = url.end(); it != end; ++it) {
       const unsigned char c = *it;
       if ((c > 127) || (c < 0x21) || (c == '%')) //не экранируются символы ASCII, за исключением пробела и процента
           ret << '%' << std::hex << std::setw(2) << std::setfill('0') << (int)c << std::setw(0);
       else
           ret << (char)c;
   }
   return ret.str();
}

int main()
{
    std::string str = "привет";
    std::cout << escapeString(str) << std::endl;
    return 0;
}


Добавлено через 4 минуты и 11 секунд
во-первых, нет такого понятия "коды URL".
во-вторых, тебе необходимо сначала сконвертировать строку в UTF-8, а затем уже делать преобразование к допустимому формату (экранирование). Почитай тему ниже про unicode.
Ты же это делаешь совершенно грубым образом, прибивая наглухо гвоздями к определенному набору символов. Причем в нем нет ни заглавных, ни буквы Ё.
PM   Вверх
mes
Дата 30.11.2011, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(kshyms @  30.11.2011,  15:02 Найти цитируемый пост)
std::replace(str.begin(), str.end(),
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
std::replace(str.begin(), str.end(), 
... 

бррр  smile неужто самому глаз не режет ?!



--------------------
PM MAIL WWW   Вверх
kshyms
Дата 30.11.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <fstream>
#include <ctype.h> 
#include <conio.h> 
#include <string.h>
#include <windows.h> 
using namespace std;
int main ()
{
std::string str[]= "привет";

str = tolower str;//конвертация буквы к нижнему регистру если это буква и она в верхнем регистре*
char c;
  while (str[i])
  {
    c=str[i];
    putchar (tolower (C) || toascii(C);
    i++;
  }

     cout << str;
     system("PAUSE");
      return 0;
}


Это сообщение отредактировал(а) kshyms - 30.11.2011, 16:47
PM MAIL WWW Skype   Вверх
bsa
Дата 30.11.2011, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kshyms, ох. Ты вообще сам понимаешь, что ты пишешь? Какой-то случайный набор функций и операторов.
Может перед написанием программы ознакомиться с языком стоит?
Кстати,  tolower() с русским языком тебе не поможет.
PM   Вверх
kshyms
Дата 30.11.2011, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <iostream>
#include <fstream>
#include <ctype.h> 
#include <conio.h> 
#include <string.h>
#include <windows.h>
#include <stdio.h>
#include <ctype.h>
int main ()
{
  int i=0;
  char str[]="Привет";
  char c;
  while (str[i])
  {
    c=str[i];
   // putchar (tolower(c));
    putchar (toascii(c));
    i++;
  }
   system("PAUSE");   
      return 0;
}

а toascii ? Вроде так ошибку не выдает



Это сообщение отредактировал(а) kshyms - 30.11.2011, 18:37
PM MAIL WWW Skype   Вверх
kshyms
Дата 30.11.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <windows.h>
#include <sstream>
#include <iomanip>
#include <string>
std::string escapeString(const std::string &url)
{
   std::stringstream ret;
   for(std::string::const_iterator it = url.begin(), end = url.end(); it != end; ++it) {
       const unsigned char c = *it;
       if ((c > 127) || (c < 0x21) || (c == '%')) //не экранируются символы ASCII, за исключением пробела и процента
           ret << '%' << std::hex << std::setw(2) << std::setfill('0') << (int)c << std::setw(0);
       else
           ret << (char)c;
   }
   return ret.str();
}
//*****
using namespace std;
int main ()
{
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); // прототип
 int  a1; // объявление двух переменных a и b целого типа данных. 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
std::cout << escapeString(q1) << std::endl;
cout<<q1; // подходит для С++ точно, для С хз
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}

Так вроде ошибок не выдает но уже даже на английском не ищет
PM MAIL WWW Skype   Вверх
bsa
Дата 1.12.2011, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kshyms, ты хоть читаешь описание функций?
Цитата
SVr4, BSD, POSIX.1-2001. POSIX.1-2008 marks toascii() as obsolete, noting that it cannot be use portably in a localized application.

Фактически, эта функция ничего не делает. Тебе необходимо использовать функции, которые я привел в последнем своем посте в теме: http://forum.vingrad.ru/index.php?show_typ...%B8%D1%86%D0%B0
PM   Вверх
kshyms
  Дата 10.12.2011, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <windows.h>
#include <sstream>
#include <iomanip>
#include <string>

using namespace std;

// обработчики сообщений CInternetPoll4View
//перекодировка строки к кодировке UTF-8
CString ContvertToUTF8(CString str, CString from) {
    map<CString, int> codePages;
    codePages["utf-16"] = 1200;
    codePages["windows-1250"] = 1250;
    codePages["windows-1251"] = 1251;
    codePages["koi8-r"] = 20866;
    codePages["koi8-u"] = 21866;
    codePages["koi8-u"] = 21866;

    //если данной кодировки в списке нет
    if (codePages.find(from) == codePages.end()) {
        AfxMessageBox("Неизвестная кодировка " + from);
        return "";
    }

    //Конвертируем исходный текст в WideString
    DWORD dwNum = MultiByteToWideChar(codePages[from], 0, str, -1, NULL, 0);
    //выделяем память под wide char строку:
    wchar_t *pwText;
    pwText = new wchar_t[dwNum];
    if(!pwText) {
        return "";
        delete []pwText;
    }
    MultiByteToWideChar(codePages[from], 0, str, -1, pwText, dwNum);

    //Конвертируем WideString в UTF-8
    dwNum = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, NULL, 0, NULL, NULL);
    char *Text;
    Text = new char[dwNum];
    if(!Text) {
        return "";
        delete []Text;
    }
    WideCharToMultiByte(CP_UTF8, 0, pwText, -1, Text, dwNum, NULL, NULL);

    CString res = CString(Text);

    //очищаем выделенную под переменные память
    delete []pwText;
    delete []Text;

    return res;
}
//*****
using namespace std;
int main ()
{
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); // прототип
 int  a1; // объявление двух переменных a и b целого типа данных. 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
std::cout << escapeString(q1) << std::endl;
cout<<q1; // подходит для С++ точно, для С хз
string s;
s="https://www.оченьпопулярный.com/search?q=";
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}

Ошибку выдает на строке 19 CString не имя типа

Это сообщение отредактировал(а) kshyms - 10.12.2011, 11:43
PM MAIL WWW Skype   Вверх
bsa
Дата 11.12.2011, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



А где ты взял этот класс? замени все CString на std::string.
PM   Вверх
kshyms
Дата 12.12.2011, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include "russia.h"
#include <fstream>
#include <windows.h>
//перекодировка строки к кодировке UTF-8
std::string ContvertToUTF8(std::string str, std::string from) {
        map<std::string, int> codePages;
        codePages["utf-16"] = 1200;
        codePages["windows-1250"] = 1250;
        codePages["windows-1251"] = 1251;
        codePages["koi8-r"] = 20866;
        codePages["koi8-u"] = 21866;
        codePages["koi8-u"] = 21866;
 
        //если данной кодировки в списке нет
        if (codePages.find(from) == codePages.end()) {
                AfxMessageBox("Неизвестная кодировка " + from);
                return "";
        }       
 
        //Конвертируем исходный текст в WideString
        //1 - исходная кодировка
        //2 - 0 - доп. флаги не установлены
        //3 - строка для конвертации
        //4 - -1 - исходная строка заканчивается \0
        //5, 6 - необязательные
        DWORD dwNum = MultiByteToWideChar(codePages[from], 0, str, -1, NULL, 0);
        //выделяем память под wide char строку:
        wchar_t *pwText;
        pwText = new wchar_t[dwNum];
        if(!pwText) {
                delete []pwText;
        }
        MultiByteToWideChar(codePages[from], 0, str, -1, pwText, dwNum);
 
        //Конвертируем WideString в UTF-8
        dwNum = WideCharToMultiByte(CP_UTF8, 0, pwText, -1, NULL, 0, NULL, NULL);
        char *Text;
        Text = new char[dwNum];
        if(!Text) {
                delete []Text;
        }
      WideCharToMultiByte(CP_UTF8, 0, pwText, -1, Text, dwNum, NULL, NULL);
 
        std::string res = std::string(Text);
 
        //очищаем выделенную под переменные память
        delete []pwText;
        delete []Text;
 
        return res;
}//*****
using namespace std;
int main ()
{
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); // прототип
 int  a1; // объявление двух переменных a и b целого типа данных. 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
std::cout << escapeString(q1) << std::endl;
cout<<q1; // подходит для С++ точно, для С хз
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}


ошибки на  14,15,24,69 строках выдает но результат уже почти есть

Это сообщение отредактировал(а) kshyms - 22.12.2011, 22:21
PM MAIL WWW Skype   Вверх
bsa
Дата 12.12.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



я не хочу помогать человеку, который не хочет включить свой мозг...
PM   Вверх
kshyms
Дата 24.12.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Тогда начнем мыслить . Прежде всего чего хотим?
вывод символьной строки после набора на любом языке (русском китайском и т.д.) из MS-DOS в UTF-16 
программирование под WIN32 на dev-C++. На этом иде которым я пользуюсь это проблемно, а вот на других иде под WINDOWS это возможно с меньшими затратами?
PM MAIL WWW Skype   Вверх
bsa
Дата 24.12.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  24.12.2011,  20:51 Найти цитируемый пост)
вывод символьной строки после набора на любом языке (русском китайском и т.д.) из MS-DOS в UTF-16

данное предложение не несет в себе смысла. может речь идет о конвертации, а не выводе?
Цитата(kshyms @  24.12.2011,  20:51 Найти цитируемый пост)
 На этом иде которым я пользуюсь это проблемно, а вот на других иде под WINDOWS это возможно с меньшими затратами?

ты ошибаешься. IDE лишь упрощает доступ к услугам редактора, компилятора и отладчика. На других IDE будет сложнее написать, так как придется дольше настраивать проект.
PM   Вверх
kshyms
  Дата 25.12.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Пусть будет конвертация но самым опримальным было бы набор и конвертация строки в UTF 16. Осталось только это объяснить компилятору
Итак два варианта постановки задачи а других вариантов нет:
1. ввод данных в стринговую переменную MS-DOS и конвертация в UTF-16
2. набор и конвертация строки в UTF 16

Добавлено @ 18:51
Да  а еще все тоже самое но под UNIX/Linux

Это сообщение отредактировал(а) kshyms - 25.12.2011, 19:07
PM MAIL WWW Skype   Вверх
xvr
Дата 25.12.2011, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



2 kshyms: программирование, это не разновидность черной магии. Не существует книги заклинаний от программирования, и Интернет таковой книгой не является. Текст программы - это не заклинание, которое надо заучить наизусть, и не дай бог ошибиться в букве или интонации.
Любая программа в первую очередь описание некоторого алгоритма. В этом описании используются некоторые термины (имена переменных, функций, классов), которые вводятся где то в другом месте (в системных библиотеках или других модулях этой же программы). Так что, когда вам надо взять какой то кусок чужой программы и поместить его в свою, не торопитесь копировать чужой текст куда нибудь к себе, это может не сработать  smile Разберитесь, что там было написано, какие функции/переменные/классы используются и откуда они взяты. Только после этого вы сможете безболезненно взять этот кусок, или понять, что его нельзя взять, т.к. он банально не совместим с вашей программой по задействованным библиотекам.

В сообщениях об ошибках от компилятора внимательно читайте текст сообщения, обычно он пишется не от балды, а описывает, что именно не так. Почти всегда текста сообщения хватает, что бы сразу понять, в чем состоит ошибка.

Вот, например:
Код

std::string ContvertToUTF8(std::string str, std::string from) {
        map<std::string, int> codePages;
вас не настораживает, что все системные (назовем их так) классы (тут string), написаны с префиксом std::, а map - без префикса. И компилятор ругается на строку с map. Видимо std:: не просто так было написано во всех остальных местах  smile 

PM MAIL   Вверх
bsa
Дата 26.12.2011, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  25.12.2011,  19:46 Найти цитируемый пост)
1. ввод данных в стринговую переменную MS-DOS и конвертация в UTF-16

под windows нужно использовать MultiByteToWideChar(), а под Unix iconv().
PM   Вверх
kshyms
  Дата 26.12.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



библиотеках
find * | recode UTF-8..CP1251/CR-LF > list.txt Изменяет кодировку списка файлов из UTF-8 (Linux) в CP1251 (Windows), корректирует перевод строки это может пригодиться  в дальнейшем. Инет 
Цитата

Интернет таковой книгой не является. 
 это самая большая электронная книга знаний и опыта
PM MAIL WWW Skype   Вверх
xvr
Дата 27.12.2011, 18:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(kshyms @  26.12.2011,  15:36 Найти цитируемый пост)
 это самая большая электронная книга знаний и опыта 

Да, но не книга готовых программ. Не думайте, что все, что там найдется, можно не разбираясь один в один скопировать к себе в программу  smile 
PM MAIL   Вверх
kshyms
  Дата 9.1.2012, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <cmath>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <windows.h>
//конвертация строки к кодировке UTF-16 (Unicode)

std::string ContvertToLC_ALL,"UTF-16 (Unicode)(std::string str, std::string from) {
        map<std::string, int> codePages;

        codePages["LC_ALL,"UTF-16 (Unicode)"] = 1251;

        DWORD dwNum = MultiByteToWideChar(codePages[from], 0, str, -1, NULL, 0);
   
        MultiByteToWideChar(codePages[from], 0, str, -1, pwText, dwNum);
 
       
 
        std::string res = std::string(Text);
 
        //очищаем выделенную под переменные память

        delete []Text;
 
        return res;
}//*****
using namespace std;
int main ()
{
setlocale(LC_ALL,"UTF-16 (Unicode)");
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); // прототип
 int  a1; // объявление двух переменных a и b целого типа данных. 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
std::cout << escapeString(q1) << std::endl;
cout<<q1;

 return 0;
}


я не боюсь ошибаться!!!

Это сообщение отредактировал(а) kshyms - 9.1.2012, 22:00
PM MAIL WWW Skype   Вверх
bsa
Дата 10.1.2012, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



эээ. ты хоть сам понял, что ты написал (и это без учета того, что у тебя синтаксические ошибки)? Ты связываешь с кодировкой utf-16 кодовую страницу 1251. Которая в принципе не является юникодом.
дальше, у тебя в коде появляется переменная pwText... Но она нигде не объявлена. Тоже самое и с переменной Text. Где она объявлена? Где под нее выделяется память?

Код
//namespace std { typedef std::basic_string<wchar_t> wstring; } //раскомментировать, если будет ругаться на wstring

struct CStrCmp
{
   int operator()(const char *ch1, const char *ch2) const { return strcmp(ch1, ch2); }
};

std::wstring ContvertToWide(const std::string &str, const std::string &from) {
        static std::map<const char *, int, CStrCmp> codePages;
        if (codePages.empty()) {
           codePages["utf-8"] = CP_UTF8;
           codePages["acp"] = CP_ACP;
           codePages["oem"] = CP_OEMCP;
           codePages["cp866"] = 866;
           codePages["windows-1250"] = 1250;
           codePages["windows-1251"] = 1251;
           codePages["windows-1252"] = 1252;
           codePages["utf-16"] = 1200;
           //...
        }
        std::map<const char *, int, CStrCmp>::const_iterator it = codePages.find(from.c_str());
        if (it == codePages.end())
            return std::wstring();
        DWORD size = MultiByteToWideChar(it->second, 0, str.c_str(), -1, NULL, 0);
        wchar_t *text = new wchar_t[size];
        MultiByteToWideChar(it->second, 0, str.c_str(), -1, text, size);
 
        std::wstring res(text);
 
        //очищаем выделенную под переменные память
        delete []text;
 
        return res;
}//*****


Это сообщение отредактировал(а) bsa - 10.1.2012, 13:04
PM   Вверх
kshyms
  Дата 14.1.2012, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <iostream>
#include <windows.h>   

using namespace std;
int main ()
{
setlocale(LC_ALL,"UTF-16 (Unicode)");
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 
 int  a1; 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
cout<<q1;

string text[] = q1;

Wstring buffer[256];

MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));    



std::string ContvertToLC_ALL,"UTF-16 (Unicode)(std::string str, std::string buffer) {
        map<std::string, int> codePages;
 
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}



Это сообщение отредактировал(а) kshyms - 14.1.2012, 21:33
PM MAIL WWW Skype   Вверх
kshyms
Дата 14.1.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <iostream>
#include <windows.h>

using namespace std;
int main ()
{
setlocale(LC_ALL,"UTF-16 (Unicode)");
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 
 int  a1; 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
cout<<q1;

Wstring q1[256];

MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1,
  buffer, sizeof(q1)/sizeof(WCHAR));    



std::string ContvertToLC_ALL,"UTF-16 (Unicode)(std::string str, std::string buffer) {
        map<std::string, int> codePages;
 
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+q1).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}


Добавлено @ 21:44
Код

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
using namespace std;
int main ()
{
setlocale(LC_ALL,"UTF-16 (Unicode)");
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 
 int  a1; 
cin  >> a1 ;
string q1; 
std::getline(std::cin, q1);
cout<<q1;


CHAR text[] = q1;


WCHAR buffer[256];


MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));

CHAR codePages;

std::string ContvertToLC_ALL,"UTF-16 (Unicode)(std::string str, std::string buffer) {
        map<std::string, int> codePages;
 
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+codePages).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}

}


Это сообщение отредактировал(а) kshyms - 15.1.2012, 09:03
PM MAIL WWW Skype   Вверх
bsa
Дата 15.1.2012, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ну и что это за хаотичный набор конструкций С++?
PM   Вверх
kshyms
  Дата 17.1.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Алгоритм
1.набор строки 
2.преобразование строки однобайтовых символов в строку Unicode
3. конвертация
4. вывод в браузер значения переменной
Осталось вроде только синтаксические ошибки исправить

PM MAIL WWW Skype   Вверх
bsa
Дата 18.1.2012, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(kshyms @  17.1.2012,  17:54 Найти цитируемый пост)
1.набор строки 
зачем тогда:
Код
 int  a1; 
cin  >> a1 ;

Вынеси этот код за пределы функции main:
Код
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 

Это что такое?
Цитата(kshyms @  14.1.2012,  22:39 Найти цитируемый пост)
CHAR text[] = q1;
И, главное, зачем оно нужно?
Цитата(kshyms @  14.1.2012,  22:39 Найти цитируемый пост)
MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));
замени text на q1.c_str(), а strlen(text) на q1.size()
Цитата(kshyms @  14.1.2012,  22:39 Найти цитируемый пост)
CHAR codePages;
std::string ContvertToLC_ALL,"UTF-16 (Unicode)(std::string str, std::string buffer) {
        map<std::string, int> codePages;
Это что за порнография?
Цитата(kshyms @  14.1.2012,  22:39 Найти цитируемый пост)
ShellExecute (NULL, "open",  (s+codePages).c_str(), NULL,   NULL, SW_SHOW);
Ты копаешь не в ту сторону. Во-первых, в сети используется utf-8, а не utf-16. Во-вторых, перед тем, как копировать символы их необходимо экранировать. В-третьих, судя по названию переменной результат будет неожиданным.
PM   Вверх
kshyms
  Дата 19.1.2012, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
using namespace std;
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 
int main ()
{
setlocale(LC_ALL,"utf-8");

 string q1; 
std::getline(std::cin, q1);
cout<<q1;

WCHAR buffer[256];

MultiByteToWideChar(CP_ACP, 0, q1.c_str(), q1.size() + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));

std::string ContvertToLC_ALL,"utf-8 (std::string str, std::string buffer) {
        map<std::string, int> codePages12; //  порнография требующая редакции
 
string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+codePages12).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}




Может этот #include <string> путь перспективен
Экранирование и вывод на экран идентичные понятие или что то еще?

Это сообщение отредактировал(а) kshyms - 19.1.2012, 16:45
PM MAIL WWW Skype   Вверх
kshyms
Дата 19.1.2012, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



Код

#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <windows.h>
 #include <string>
//Программы перекодировки KOI в WIN 
#ifndef __CODEPAGE_H__
#define __CODEPAGE_H__

// Константы для кодовых страниц
#define CP_KOI8       20866
#define CP_KOI8R      20866
#define CP_KOI8U      21866
#define CP_ISO_8859_5 28595

// Исключительно для удобства
#define CP_1251       1251
using namespace std;
int wctomb(char *out, wchar_t in);
    int simple_function(void* p, long size); 
int main ()
{
setlocale(LC_ALL,"utf-8");

 
string q1; 
std::getline(std::cin, q1);
cout<<q1;

// буфер для получения результата
WCHAR buffer[256];

// преобразование строки в Unicode
MultiByteToWideChar(CP_ACP, 0, q1.c_str(), q1.size() + 1,
  buffer, sizeof(buffer)/sizeof(WCHAR));



inline BOOL ConvertFromCP_866(UINT uiOUI, CString& szString){
  return(ConvertCP(CP_utf-8, uiOUI, szString));//  порнография требующая редакции

string s;
s="https://www.google.com/search?q=";
ShellExecute (NULL, "open",  (s+codePages12).c_str(), NULL,   NULL, SW_SHOW);
  return 0;
}


Это сообщение отредактировал(а) kshyms - 19.1.2012, 17:12
PM MAIL WWW Skype   Вверх
bsa
Дата 19.1.2012, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



kshyms, тебе стоит почитать все-таки книги. Или бросить программирование. На данный момент ты просто тыкаешься как слепой котенок без понимания своих действий.

Цитата(kshyms @  19.1.2012,  17:34 Найти цитируемый пост)
Может этот #include <string> путь перспективен
он значительно перспективней, нежели char*,new/delete,strcpy,strcmp...
Цитата(kshyms @  19.1.2012,  17:34 Найти цитируемый пост)
Экранирование и вывод на экран идентичные понятие или что то еще?
нет. это совершенно разные понятия. Экранирование - это замещение недопустимых символов набором допустимых, например:"hello world!" -> "hello%20world!" (тут пробел заменяется на %20, где 20 - это шестнадцатеричный код пробела).
PM   Вверх
kshyms
  Дата 20.1.2012, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

Репутация: нет
Всего: 0



профи  smile 
лучшая книга она у вас здесь и результат уже есть 
Но работа еще предстоит!!! 

Модератор: удалил ссылку на исполняемый файл

Это сообщение отредактировал(а) bsa - 23.1.2012, 10:11
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.