У меня возникает проблемма,работа со строкой.Нужно определить самое короткое слово не меньше 3 букв. Вроде поставил setlocale(LC_ALL,"RUS"); но когда делаешь действия с введенными на русском словами,то кодировка не русская и появляются каракули,кто знает как исправить? #include <iostream> #include <string.h> #include <conio.h> #include <locale.h> using namespace std; void main() { setlocale(LC_ALL,"RUS"); const int n=100,kol=10; typedef char String[n]; String s,mas[kol]; cout<<"Введите строку: "; cin.getline(s,100); cout<<s<<endl; int k=0; char* token=strtok(s," "); while (token) { strcpy(mas[k++],token); token= strtok(NULL," "); } cout<<"Массив слов\n"; for (int i=0;i<k;i++) cout<<mas<<" Букв в слове - "<<strlen(mas)<<endl; String t; for (int i=0;i<k;i++) for (int j=k-1;j>i;j--) if(strcmp(mas[j],mas[j-1])<0) { strcpy(t,mas[j]); strcpy(mas[j],mas[j-1]); strcpy(mas[j-1],t); } cout<<"Массив слов после сортировки:\n"; for ( int i=0;i<k;i++) cout<<mas<<endl; if ((strlen(mas[0]))<=3) cout<<"Самое короткое слово: "<<mas[0]; else cout<<"Самого короткого слова <3, нету "; getch(); }
попробуй что-то одно из этого: setlocale (LC_ALL,".1251"); SetConsoleOutputCP(1251); CharToOem(string, string); cout << _T("Your string");
Если я правильно понял, вам нужно в свойствах консоли поставить шрифт Lucida Console и: PHP: #include <iostream> #include <windows.h> using namespace std; int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); return 0; } можно отдельно скомпилировать и запускать при открытии консоли, чтобы не добавлять во все приложения.
эту конструкцию вставлять всю не пойму ,у меня в примере с не возвращающей стоит.как у меня нужно вставить?
Если на С: PHP: #include <iostream.h> #include <windows.h> void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); } main - обычная функция если перед её именем стоит тип, то она возвращает его. void - отсутствие возвращаемого значения, но с неё можно выйти передав return. http://ru.wikipedia.org/wiki/C++
Блин вы пример мой измените!!а не объясняйте не понятно что,я не понимаю заумных слов! что такое void main или int main -я знаю,и чем отличаются.Язадал вопрос как решить ,напишите полностью код так чтобы получилось в моем примере так как я пытался уже по разному вставлять строки относящиеся к кодировке и не чего не выходит.) Мея интересует только Си++!!
попробуй так: #include <iostream> #include <string.h> #include <conio.h> #include <locale.h> include <windows.h> using namespace std; void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int n=100,kol=10; typedef char String[n]; String s,mas[kol]; cout<<"Введите строку: "; cin.getline(s,100); cout<<s<<endl; int k=0; char* token=strtok(s," "); while (token) { strcpy(mas[k++],token); token= strtok(NULL," "); } cout<<"Массив слов\n"; for (int i=0;i<k;i++) cout<<mas<<" Букв в слове - "<<strlen(mas)<<endl; String t; for (int i=0;i<k;i++) for (int j=k-1;j>i;j--) if(strcmp(mas[j],mas[j-1])<0) { strcpy(t,mas[j]); strcpy(mas[j],mas[j-1]); strcpy(mas[j-1],t); } cout<<"Массив слов после сортировки:\n"; for ( int i=0;i<k;i++) cout<<mas<<endl; if ((strlen(mas[0]))<=3) cout<<"Самое короткое слово: "<<mas[0]; else cout<<"Самого короткого слова <3, нету "; getch(); }
е мае... куда мир катится? и ты после этого еще хочешь чтобы у тебя что-то в программировании получалось? НИКОГДА! Если не знаешь читай! Сейчас в инете все есть.
Что вот вот,я сначала поискал в гугле свою проблемму,посидел 2часа пробывал и не выходит с кодировкой,не прошу же решить задачу ,которую я и сам в силах решить,нет не подходит метод закорючки везде и при письме строки даже!.
У меня та же проблема с кодировкой была когда начинал, ну сразу не стал искать, писал транслитом, потом не выдержал и за пару ссылок нашел то что и описал здесь. Там было написано изменить шрифт консоли, добавить заголовок windows.h (#include <windows.h>) и SetConsoleCP(1251); SetConsoleOutputCP(1251); в начало программы, собственно что тут сложного если базовые знания где ставятся заголовки и где начинается выполнение )
Вставь и проверь что получиться. #include <iostream> #include <string.h> #include <conio.h> #include <locale.h> #include <windows.h> using namespace std; void main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int n=100,kol=10; typedef char String[n]; String s,mas[kol]; cout<<"Введите строку: "; cin.getline(s,100); cout<<s<<endl; int k=0; char* token=strtok(s," "); while (token) { strcpy(mas[k++],token); token= strtok(NULL," "); } cout<<"Массив слов\n"; for (int i=0;i<k;i++) cout<<mas<<" Букв в слове - "<<strlen(mas)<<endl; String t; for (int i=0;i<k;i++) for (int j=k-1;j>i;j--) if(strcmp(mas[j],mas[j-1])<0) { strcpy(t,mas[j]); strcpy(mas[j],mas[j-1]); strcpy(mas[j-1],t); } cout<<"Массив слов после сортировки:\n"; for ( int i=0;i<k;i++) cout<<mas<<endl; if ((strlen(mas[0]))<=3) cout<<"Самое короткое слово: "<<mas[0]; else cout<<"Самого короткого слова <3, нету "; getch(); }
Русский текст чтоли никак не мог вывести? я так делаю: Code: #include "windows.h" #include <iostream> using namespace std; #define OutRusText(_string_) CharToOem(_string_,szStr);\ cout<< szStr<< endl; char szStr[512]; int _tmain(int argc, _TCHAR* argv[]) { OutRusText(L"Превед медвед!"); return 0; }