【发布时间】:2016-10-26 11:03:04
【问题描述】:
我有 2 个错误让我感到恶心和困惑。
错误 #1:
错误 C2679:二进制“+=”:未找到采用“std::basic_string<_elem>”类型右侧操作数的运算符(或没有可接受的转换)
这个错误的代码是:
CString lancuch1;
lancuch1 = "Znaleziono ";
lancuch1 += liczba1.str();
lancuch1 += " pozycji.";
第二个更奇怪:
错误 #2:
错误 C2440:“正在初始化”:无法从“std::_Vector_iterator<_ty>”转换为“std::basic_string<_elem>”
这个错误我已经写了 7 次代码:
for(int i = 0 ; i < pojemnosc_vectora; i++){
std::string linijka = (vector.begin()+i);
char deli = ';';
int a = 0;
for(int i = 0; i<5; i++){
std::string pokico = linijka.substr(a, deli);
vector2.push_back(pokico);
a+=pokico.length();
}
}
int licznik_komunikatow=0;
for(int i=0; i<vector.size(); i++){
std::string komunikat1 = vector2.begin()+(licznik_komunikatow);
std::string komunikat2 = vector2.begin()+(licznik_komunikatow+1);
std::string komunikat3 = vector2.begin()+(licznik_komunikatow+2);
std::string komunikat4 = vector2.begin()+(licznik_komunikatow+3);
std::string komunikat5 = vector2.begin()+(licznik_komunikatow+4);
CString komun,komun1,komun2,komun3,komun4;
komun = komunikat1.c_str();
komun1 = komunikat2.c_str();
komun2 = komunikat3.c_str();
komun3 = komunikat4.c_str();
komun4 = komunikat5.c_str();
printf("Nazwa: %s \n Cena: %s \n Ilość: %s \n Gdzie: %s \n Kod: %s \n ", komun, komun1, komun2, komun3, komun4 );
}
告诉我是我的问题还是 Visual 2005 的问题。我有点厌倦了我不太理解的奇怪错误。任何人都知道如何解决这个问题?
【问题讨论】:
-
"my bad or Visual's 2005 bad" --> 99.98% 的时间,这是编码人员的错误。 (VS 2005 可能是 99.0%)
-
首先,不要使用 Visual Studio 2005。与较新的版本相比,它确实很旧并且存在大量错误。 VS2015 社区版可免费下载。
-
(vector.begin()+i);会给你一个迭代器,你必须取消引用才能得到里面的东西。大概是std::string -
我想在 Visual 2015 上工作,但由于 Windows CE,我必须在 2005 年完成... .
-
请缩进您的代码。
标签: c++ mfc visual-studio-2005