Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
#1

массив string - C++

25.07.2011, 13:08. Просмотров 2888. Ответов 22
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void func(string *mas)
{
//здесь
}
 
int main()
{
string s[] =
{
   "one",
   "two",
   "three"
};
func(s);
}
как в функции узнать сколько элементов содержит переданный ей массив string?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2011, 13:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос массив string (C++):

есть массив char. есть строка string. как присвоить значению string-a значение char-a? - C++
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

String в массив - C++
Нужно из string слова разделенные пробелами занести в массив каждое слово отдельно.Нельзя использовать тип *сhar. Как это сделать и какой...

string массив - C++
Как создать массив в который буду я вводить данные ? Написал не большой код : // Lab_1.cpp : Defines the entry point for the...

string и массив строк - C++
у меня массив строк = 'aaaaaaaa'; = 'xxx()'; = 'ddddd'; = 'eeeeee'; потом нужно вместо потом нужно вместо xxx()...

Fn(string s) - в массив функций - C++
Есть различные функции хэширования string f1(string s) f2(string s) ... fn(string s) как их все вызвать, не нагромождая код? ...

22
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
25.07.2011, 13:11 #2
никак) только предавать размер
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
25.07.2011, 13:14  [ТС] #3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
никак)


а как тогда в main() подсчитать количество элементов?
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
25.07.2011, 13:17 #4
Mayonez,

Цитата Сообщение от Mayonez Посмотреть сообщение
а как тогда в main() подсчитать количество элементов?
C++
1
std::cout << sizeof(s) / sizeof(std::string) << std::endl;
0
Kastaneda
Форумчанин
Эксперт С++
4676 / 2880 / 234
Регистрация: 12.12.2009
Сообщений: 7,317
Записей в блоге: 2
Завершенные тесты: 1
25.07.2011, 18:02 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template<size_t N>
void func(std::string (&mas)[N])
{
std::cout <<N << std::endl;
}
 
int main()
{
std::string s[] =
{
   "one",
   "two",
   "three"
};
func(s);
}
3
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.07.2011, 18:55 #6
vector (list/deque/..) надо использовать
во всех случаях, ну может быть только кроме случая, когда время жизни объекта очень мало.
2
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
27.07.2011, 18:48  [ТС] #7
Цитата Сообщение от fasked Посмотреть сообщение
vector
вектор нельзя так удобно инициализировать
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.07.2011, 18:55 #8
Цитата Сообщение от Kastaneda Посмотреть сообщение
{
"one",
"two",
"three"
};
вектор тоже можно так иницилизировать но только в новых версиях gcc/MinGW
0
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.07.2011, 19:00 #9
Mayonez, ну смотря насколько удобно, например можно вот так с помощью boost::assign

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <boost/assign/std/vector.hpp>
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
using namespace boost::assign;
 
int main()
    {
    std::vector<std::string> svec;
    svec += "one" , "two" , "three";
    std::for_each(svec.begin(), svec.end(), [](std::string const & s)
            {
            std::cout << s << ' ';
            }
    );
    }
2
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,817
27.07.2011, 19:08 #10
Цитата Сообщение от Mayonez Посмотреть сообщение
вектор нельзя так удобно инициализировать
На одну строчку больше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main(){
    const char * arr[] = { "One", "Two", "Three" };
    std::vector<std::string> vec(arr, arr + sizeof(arr) / sizeof(*arr));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    
    return 0;
}
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
27.07.2011, 19:10  [ТС] #11
Цитата Сообщение от Ma3a Посмотреть сообщение
boost::assign
а это что?
0
Ma3a
Эксперт С++
618 / 462 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.07.2011, 19:12 #12
Mayonez, пространство имён библиотеки assign, входящей в набор библиотек boost, чтобы можно было просто записать в стиле vec += ..., а не писать полный доступ к оператору += через функциональную форму. Библиотека создавалась как раз для того, чтобы можно было удобно присваивать и добавлять значения в различные контейнеры.
1
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
29.07.2011, 15:35  [ТС] #13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
вектор тоже можно так иницилизировать но только в новых версиях gcc/MinGW
скачал последнюю minwg - не инициализируется
0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.07.2011, 15:35 #14
Mayonez, попробуйте откомпилировать с параметром
Код
-std=c++0x
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
29.07.2011, 15:58  [ТС] #15
Цитата Сообщение от Mayonez Посмотреть сообщение
но только в новых версиях gcc/MinGW
fasked, тоесть имеется ввиду новый стандарт языка?
0
29.07.2011, 15:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 15:58
Привет! Вот еще темы с ответами:

Присвоить string'y массив char - C++
char name1 = &quot;helloPeople&quot;; std::string name2; name2 = name1; // как можно это реализовать? Причем с массива нужно начать считывать...

Преобразовать string в массив byte[] - C++
Привет. У меня есть строка к примеру &quot;test&quot; в ней 4 байта? Перевести ее в unsigned char это просто каждый символ занести а массив? { 't',...

Чтение из файла в массив string - C++
Есть файл с 50 строками (в конце последней - '\n') и код чтения строк в массив string. При чтении идёт подсчёт считанных строк. Если...

Динамический массив std::string - C++
пользователь ввел число и нужно сделать массив string a где x пользовательское число. string s = new string;// не канает ошибка


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru