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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Sadisst
#1

Ошибка String subscript out of range - C++

04.09.2012, 14:58. Просмотров 1958. Ответов 2
Метки нет (Все метки)

Здравствуйте. Написал на Dev C++ 4.9.9.2 программу которая открывает фаил и кладет все в буфер.
Содержание файла: gehen v test*kommen v test*sagen v test
Дальше функцией sort() берет символ и сравнивает весь буфер . Первый пробел (конец первого слова )и до звездочки (конец строки) все это он делит в два вектора для слов и вектор для строк которые кончаются -*.
Всё как бы работает ,но пробовал на Microsoft Visual Studio 2010 там тоже все создается только пишет - String subscript out of range.После чего все завершается. Создает какое-то исключение или ошибка выход за память, так и не разобрался .Может кто-нибудь скажет в какую сторону мне копать или совет ?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
vector <string> uff;        
vector <string> half_uff;   
string buffer;              
string buf;
int n;
 
void loading ()
{ 
     char file[]="C:\\deu.lang";
     ifstream in( file );
     in.seekg(0, ios::end);                            
     buffer.resize( in.tellg() );                           
     n = buffer.length();                           
     in.seekg(0, ios::beg);                             
     in.read ( (char*)buffer.data(), buffer.size() );   
     in.close();
}   
 
void g (int s)
{
    for (int p =0; p<s;p++)
    {
        buf[p]='\0';    //Обнуляем весь буфер
    }
}
 
void sort ()
{
     int s = 0; 
     int wuff =0;
     for ( int i = 0; i < n; i++, ++s )
     {
         //if ( buffer[i] == '\n' ){ break; }//проверка на конец всего буфера   
            
         if ( buffer[i] ==' ' && wuff==0 )  { half_uff.push_back(buf.data()); wuff = 1; }    
 
         if ( buffer[i] !='*' ) { buf[s] = buffer[i];}  
         else { uff.push_back(buf.data()); wuff =0; 
          
           g( s);  s=-1; } 
     }//-end for
     }
 
void fun ()
{
     std::string s;
     int v = half_uff.size (); 
        for(int i = 0; i < v; i++)
        {
            s =  half_uff[i]; 
            cout<<s<<endl;
        }
}
    
int main(int argc, char *argv[])
{
loading (); 
sort ();
fun ();
 
system("PAUSE");
    return EXIT_SUCCESS;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2012, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка String subscript out of range (C++):

Ошибка: string subscript out of range - C++
При запуске выдает ошибку &quot;string subscript out of range&quot;. Подскажите, в чем проблема. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Ошибка string subscript out of range - C++
Здраствуйте создал библиотеку, при подключение библиотеки и запуска программи все работает коректно(данние принимаются, обрабативаются,...

Ошибка: String subscript out of range - C++
Expression: String subscript out of range Консольное приложение. Программа должна перерабатывать построчно текстовый файл с кодом и...

Ошибка expression string subscript out of range - C++
Ребят, уже всю голову разбил... не пойму где здесь может быть ошибка, что я не так сделал???? почему то как обычную строку выводит на...

Ошибка при быстрой сортировке файла: "string subscript out of range" - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

String subscript out of range - C++
При запуске выдает ошибку &quot;string subscript out of range&quot;. Подскажите, в чем проблема. #include &lt;iostream&gt; #include &lt;string&gt; ...

2
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
04.09.2012, 16:36 #2
вообще то std::string::data модифицировать нельзя. Ф-цию loading лучше изобрази так
C++
1
2
3
4
5
6
7
8
#include <iterator>
void loading ()
{
     ifstream in( "C:\\in.txt" );
     buffer.assign((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
     n = buffer.size();
     in.close();
}
Добавлено через 20 минут
ошибка здесь
buf[s] = buffer[i];
лучше писать что то типа buf += buffer[i];
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2012, 20:06 #3
Sadisst, вы в функции sort() оперируете с пустой строкой buf. Отсюда ошибки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2012, 20:06
Привет! Вот еще темы с ответами:

String subscript out of range - C++
Разбираю пример, который дала препод в примерах к лекциям..Пример по коду Виженера.. Пару раз запустился-результат выводился.Исправила...

Ошибка "String subscript out of range" - C++
#include &lt;SFML/Graphics.hpp&gt; using namespace sf; int ground = 400; int i; const int H = 12; const int W = 40; String...

Тип string и subscript out of range - C++
Доброго времени дня. Такая проблема. Обращаюсь к отдельному элементу массива: #include &lt;iostream&gt; #include &lt;string&gt; ...

Хеш-таблицы: string subscript out of range - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;string&gt; using namespace std; typedef string nametype; struct celltype { ...


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

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

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