Просмотр полной версии : Заполнение Vector
Как правильно заполнить вектор символами из строки:
пишу так:
#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;
}
}
При выводе за место русских букв пишет знаками!
Как исправить ?
Спасибо за помощь!
setlocale думаю тебе поможет
setlocale думаю тебе поможет
И я думаю! :)
Но я уже все что можно в параметрах указывал :D а толку 0
strlen(st.c_str())
умиляют такие перлы. ну читани ты доки ( 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: читай книжки. а то уход за пределы массива и кривые стрлены говорят о писании методом тыка.
strlen(st.c_str())
умиляют такие перлы. ну читани ты доки ( 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: читай книжки. а то уход за пределы массива и кривые стрлены говорят о писании методом тыка.
Спасибо!
Но русские символы все равно не отображаються :mad:
И еще ни когда не видел операцию : 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 вышло))).
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot