Как правильно заполнить вектор символами из строки:
пишу так:
Код:
#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;
}
}
При выводе за место русских букв пишет знаками!
Как исправить ?
Спасибо за помощь!
умиляют такие перлы. ну читани ты доки ( http://www.cplusplus.com/reference/ ), неужели не веришь что в классе строки есть метод получения длины оной?
Код:
#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[i] это приведение типа?(в первый раз такое вижу)
Ubuntu 9.10 х64 Code::Bloks
ну на счет русского хз. это под вендой такой способ работает.
про string() = st[i] - это из-за того что в компиле 2003 студии у конструктора string нет варианта, который берет один символ, зато есть операция присвоения от одного символа. по сути это создание локальной переменной без имени и присвоение ей значения а потом копирование этого значения в вектор.
иначе бы я сделал так letters.push_back( string(st[i]) );
ну на счет русского хз. это под вендой такой способ работает.
про string() = st[i] - это из-за того что в компиле 2003 студии у конструктора string нет варианта, который берет один символ, зато есть операция присвоения от одного символа. по сути это создание локальной переменной без имени и присвоение ей значения а потом копирование этого значения в вектор.
иначе бы я сделал так letters.push_back( string(st[i]) );
спасибо что разъяснили.
А с русскими символами поступил просто в лоб))) по символу push_back() вставляю 66 вышло))).