Ошибка манипулирования std :: string в C ++ Builder 6

Я создаю класс для проекта, используя топор Emericc. Цель этого класса — использовать фреймы ошибок для возврата сообщения. Я должен использовать только переменные std :: string STL.
Однако среда IDE не распознает никаких манипуляций со строками после выполнения одной из функций поиска.

Обратите внимание, что я француз, поэтому я использую переменные на своем языке (хотя код довольно прост).

Ошибка, с которой я сталкиваюсь, заключается в этой функции:

string ErrMericc::ErrTrame(string trame)
{
/*
trame(fr) = frame(eng)
virgule(fr) = comma(eng) [I shortened "virgule" to "virg" in a variable]
*/

this->trame=trame;
trame.find('!', posExcl); //this marks the beginnig of the error number

if(posExcl == string::npos)
{
trame.clear(); //clearing in case the variable is not empty
//in case this is not an error frame
trame.push_back("Erreur 200 : "+errors[200]+". La trame envoyée n'est pas une trame d'erreur.");
return trame;
}
else
{
trame.find(',', posVirg); //here is the error
//starting here, no function using a string is recognized by the IDE
//and I don't find why
nb.push_back(trame.substr(posExcl+2, posVirg)); //unrecognized push_back() and substr()

errNb=StrToInt(trame.c_str());
trame=errors[errNb];
return "Erreur "+IntToStr(errNb)+" : "+trame;
}

}

C ++ Builder 6 говорит мне: [C ++ Error] ErrMericc.cpp (1): невозможно вызвать выполнение кода из-за ошибок исходного кода.
Когда я дважды щелкаю это сообщение об ошибке, оно выводит меня на первую строку исходного кода в файле.

Похоже, что сообщение об ошибке не прекращается, за исключением случаев, когда я закомментирую «trame.find (‘,’, posVirg);».

Не могли бы вы объяснить, где моя ошибка?

РЕДАКТИРОВАТЬ:

Похоже, C ++ Builder 6 просто не нравится строка кода …

Это работает:

    trame.find(',', posVirg); //here is the error
//starting here, no function using a string is recognized by the IDE
//and I don't find why
nb.push_back(trame.substr(posExcl+2, posVirg)); //unrecognized push_back() and substr()

Это не:

    //here is the error
//starting here, no function using a string is recognized by the IDE
//and I don't find why
trame.find(',', posVirg);
nb.push_back(trame.substr(posExcl+2, posVirg)); //unrecognized push_back() and substr()

Weird.

Я начинаю думать, что проблема исходит от IDE.
До сих пор я пытался скопировать и переместить файлы в новую папку, но это не помогло.

0

Решение

Оказывается, ошибка возникла из-за моего использования функции push_back (): я могу отталкивать только один символ за раз.
Ввод нескольких значений в одной ячейке памяти, состоящей из одного символа, не был хорошей идеей.

Судя по всему, C ++ Builder 6 просто не знал, что делать, поскольку ошибки возникли из-за того, что я что-то использовал в stl.

Так что я не должен был делать:

trame.push_back("Erreur 200 : "+errors[200]+". La trame envoyée n'est pas une trame d'erreur.");

Но :

trame = string("Erreur 200 : ") + errors[200] + string(". La trame envoyée n'est pas une trame d'erreur.");
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector