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

Тип string и subscript out of range - C++

Восстановить пароль Регистрация
 
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
21.07.2013, 12:34     Тип string и subscript out of range #1
Доброго времени дня. Такая проблема.

Обращаюсь к отдельному элементу массива:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
int main()
{
    string line;
 
    line[0] = 'c';
    cout << line << endl;
    _getch();
}
Соответственно, при запуске программы возникает окно, сообщающее об ошибке: string subscript out of range

Пробовал указать размер массива, таким образом
C++
1
string line[5]
Но ничего хорошего не вышло.
Подскажите, как решить данную проблему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.07.2013, 12:34     Тип string и subscript out of range
Посмотрите здесь:

string subscript out of range C++
Ошибка String subscript out of range C++
C++ string subscript out of range Завтра лабу нужно здать! не понимаю где ошибка
ошибка string subscript out of range C++
string subscript out of range C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.07.2013, 12:37     Тип string и subscript out of range #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <conio.h>
 
using namespace std;
 
int main()
{
    string line(5, ' ');
    line[0] = 'c'; 
    cout << line << endl;
    _getch();
}
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
21.07.2013, 12:39  [ТС]     Тип string и subscript out of range #3
Спасибо
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 13:25     Тип string и subscript out of range #4
Это из-за того что у тебя строка пустая, и символа с индексом 0 не существует.
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
21.07.2013, 16:28  [ТС]     Тип string и subscript out of range #5
lazybiz, да, это я понимаю, просто как решить не знал

Добавлено через 43 секунды
Добавлено через 2 часа 56 минут
И использовать конструкцию такого типа

C++
1
string line(5, ' ');
можно в любом месте кода,как я понимаю

C++
1
2
3
4
5
6
...
           string str;
 
    cin >> str;
           string out_str( str.size(), '-' );
...
Допустим, если мне при объявлении инициализация не требуется
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
21.07.2013, 16:34     Тип string и subscript out of range #6
Не требуется - не инициализируй. Но тогда и не обращайся к элементам строки которых нет.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
21.07.2013, 16:34     Тип string и subscript out of range #7
А что Вам требуется?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
22.07.2013, 11:48     Тип string и subscript out of range #8
Цитата Сообщение от art1535 Посмотреть сообщение
Обращаюсь к отдельному элементу массива:
Для начала стоит понять, что строка (std::string) это уже по сути контейнер, и через оператор "квадратные скобки" Вы получаете доступ к заданному элементу строки, т.е. к символу. Если Вам нужен именно массив символов, а не строка, то логичнее использовать std::vector<char>. А если массив строк, то std::vector<std::string>.
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
22.07.2013, 19:17  [ТС]     Тип string и subscript out of range #9
Ведь инициализация подобным образом

C++
1
string out_str( str.size(), '-' );
возможна ведь только при непосредственном объявлении?

Так ведь нельзя делать?

C++
1
2
3
4
5
6
7
8
string str;
 
int main()
{
....
str( 5, ' ' );
....
}
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.07.2013, 19:20     Тип string и subscript out of range #10
C++
1
str.assign(5, ' ');
art1535
 Аватар для art1535
7 / 7 / 0
Регистрация: 19.02.2013
Сообщений: 76
22.07.2013, 19:37  [ТС]     Тип string и subscript out of range #11
C++
1
2
3
4
5
6
...
           string str;
 
           cin >> str;
           string out_str( str.size(), '-' );
...
Хочу еще про этот момент спросить. Ведь объявление объектов желательно в начале ведь верно? То есть здесь лучше использовать метод assign() ? Возможно, вопрос немного глупый.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
22.07.2013, 19:39     Тип string и subscript out of range #12
Цитата Сообщение от art1535 Посмотреть сообщение
Ведь объявление объектов желательно в начале ведь верно?
Для С++ не верно. Где требуется там и стоит объявлять. Т.е. по надобности.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.07.2013, 19:41     Тип string и subscript out of range
Еще ссылки по теме:

пожалуйста исправте ошибку string subscript out of range C++
String subscript out of range при создании динамического массива C++
C++ String subscript out of range

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.07.2013, 19:41     Тип string и subscript out of range #13
Цитата Сообщение от art1535 Посмотреть сообщение
Ведь объявление объектов желательно в начале ведь верно?
нет
Yandex
Объявления
22.07.2013, 19:41     Тип string и subscript out of range
Ответ Создать тему
Опции темы

Текущее время: 10:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru