Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/20: Рейтинг темы: голосов - 20, средняя оценка - 4.90
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
1

массив string

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

Author24 — интернет-сервис помощи студентам
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2011, 13:08
Ответы с готовыми решениями:

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

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

string массив
Как создать массив в который буду я вводить данные ? Написал не большой код : // Lab_1.cpp :...

String в массив
Нужно из string слова разделенные пробелами занести в массив каждое слово отдельно.Нельзя...

22
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
25.07.2011, 13:11 2
никак) только предавать размер
0
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
25.07.2011, 13:14  [ТС] 3
Цитата Сообщение от Maxwe11 Посмотреть сообщение
никак)


а как тогда в main() подсчитать количество элементов?
0
Эксперт С++
342 / 306 / 36
Регистрация: 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
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
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
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
25.07.2011, 18:55 6
vector (list/deque/..) надо использовать
во всех случаях, ну может быть только кроме случая, когда время жизни объекта очень мало.
2
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
27.07.2011, 18:48  [ТС] 7
Цитата Сообщение от fasked Посмотреть сообщение
vector
вектор нельзя так удобно инициализировать
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
27.07.2011, 18:55 8
Цитата Сообщение от Kastaneda Посмотреть сообщение
{
"one",
"two",
"three"
};
вектор тоже можно так иницилизировать но только в новых версиях gcc/MinGW
0
Эксперт С++
623 / 467 / 57
Регистрация: 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
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
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
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
27.07.2011, 19:10  [ТС] 11
Цитата Сообщение от Ma3a Посмотреть сообщение
boost::assign
а это что?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
27.07.2011, 19:12 12
Mayonez, пространство имён библиотеки assign, входящей в набор библиотек boost, чтобы можно было просто записать в стиле vec += ..., а не писать полный доступ к оператору += через функциональную форму. Библиотека создавалась как раз для того, чтобы можно было удобно присваивать и добавлять значения в различные контейнеры.
1
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
29.07.2011, 15:35  [ТС] 13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
вектор тоже можно так иницилизировать но только в новых версиях gcc/MinGW
скачал последнюю minwg - не инициализируется
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
29.07.2011, 15:35 14
Mayonez, попробуйте откомпилировать с параметром
Код
-std=c++0x
0
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
29.07.2011, 15:58  [ТС] 15
Цитата Сообщение от Mayonez Посмотреть сообщение
но только в новых версиях gcc/MinGW
fasked, тоесть имеется ввиду новый стандарт языка?
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
29.07.2011, 16:00 16
Цитата Сообщение от Mayonez Посмотреть сообщение
тоесть имеется ввиду новый стандарт языка?
Да, списки инициализации это фишка из нового стандарта.
0
Заблокирован
Автор FAQ
29.07.2011, 16:58 17
Я реализовывал подобное вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <stdio.h>
 
int func(char ** mas)
{
    int i = 0;
    while(mas[i] != NULL)
        i++;
    return i;
}
 
int main()
{
    char * s[] =
    {
       "one",
       "two",
       "three",
       NULL
    };
    printf("String contain %d substrings\r\n",func(s));
    system("pause");
    return 0;
}
Миниатюры
массив string  
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
29.07.2011, 17:00 18
-=ЮрА=-, почему не обобщенным шаблоном?
0
Заблокирован
Автор FAQ
29.07.2011, 17:03 19
Почему char ** вместо string, впринципе ничего не измениться если поставить string
0
392 / 284 / 53
Регистрация: 26.12.2009
Сообщений: 874
29.07.2011, 17:08  [ТС] 20
-=ЮрА=-, в том то и дело что изменится...
0
29.07.2011, 17:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2011, 17:08
Помогаю со студенческими работами здесь

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

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

Динамический массив std::string
пользователь ввел число и нужно сделать массив string a где x пользовательское число. string s =...

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru