Как правильно заполнить вектор символами из строки: пишу так: Code: #include <iostream> #include <string.h> #include <vector> #include <stdio.h> using namespace std; int main(){ vector<string> letters; string st ="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^abcdefghijklmnopqrstuvwxyz{|}~абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; string st_d[300]; for (unsigned int i = 0;i<=strlen(st.c_str());i++){ st_d[i]=st[i]; for (unsigned int i =0;i<=strlen(st.c_str());i++){ letters.push_back(st_d[i]); cout<<st_d[i]<<endl; } } При выводе за место русских букв пишет знаками! Как исправить ? Спасибо за помощь!
Code: strlen(st.c_str()) умиляют такие перлы. ну читани ты доки ( http://www.cplusplus.com/reference/ ), неужели не веришь что в классе строки есть метод получения длины оной? Code: #include <iostream> #include <string> #include <vector> using namespace std; int main(){ system("mode con cp select=1251"); vector<string> letters; string st ="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^abcdefghijklmnopqrstuvwxyz{|}~абвгдеёжзийклмнопрс туфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; for (unsigned int i = 0;i<st.length();i++){ letters.push_back( string() = st[i] ); cout << letters[i].c_str() << endl; } system("pause"); } но вообще system юзать не айс. локали работают через раз с бубном в vs2003 ps: читай книжки. а то уход за пределы массива и кривые стрлены говорят о писании методом тыка.
Спасибо! Но русские символы все равно не отображаються И еще ни когда не видел операцию : string() = st это приведение типа?(в первый раз такое вижу) Ubuntu 9.10 х64 Code::Bloks
ну на счет русского хз. это под вендой такой способ работает. про string() = st - это из-за того что в компиле 2003 студии у конструктора string нет варианта, который берет один символ, зато есть операция присвоения от одного символа. по сути это создание локальной переменной без имени и присвоение ей значения а потом копирование этого значения в вектор. иначе бы я сделал так letters.push_back( string(st) );
спасибо что разъяснили. А с русскими символами поступил просто в лоб))) по символу push_back() вставляю 66 вышло))).