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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Sadisst
Сообщений: n/a
04.09.2012, 14:58     Ошибка String subscript out of range #1
Здравствуйте. Написал на 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
Посмотрите здесь:

string subscript out of range C++
C++ string subscript out of range Завтра лабу нужно здать! не понимаю где ошибка
ошибка string subscript out of range C++
string subscript out of range C++
пожалуйста исправте ошибку string subscript out of range C++
C++ Тип string и subscript out of range
C++ Ошибка "String subscript out of range"
C++ String subscript out of range

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
04.09.2012, 16:36     Ошибка String subscript out of range #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];
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.09.2012, 20:06     Ошибка String subscript out of range #3
Sadisst, вы в функции sort() оперируете с пустой строкой buf. Отсюда ошибки.
Yandex
Объявления
04.09.2012, 20:06     Ошибка String subscript out of range
Ответ Создать тему
Опции темы

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