我有2个错误让我感到恶心并且有点困惑。
错误#1:
错误C2679:二进制' + =' :找不到哪个运算符采用类型' std :: basic_string< _Elem,_Traits,_Ax>'的右手操作数(或者没有可接受的转换)
此错误的代码是:
CString lancuch1;
lancuch1 = "Znaleziono ";
lancuch1 += liczba1.str();
lancuch1 += " pozycji.";
第二个,更奇怪:
错误#2:
错误C2440:'初始化' :无法转换为' std :: _ Vector_iterator< _Ty,_Alloc>' to' std :: basic_string< _Elem,_Traits,_Ax>'
这个错误我已经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 );
}
告诉我,这是我的坏事还是视觉2005年的不好。我有点厌倦了我不太懂的奇怪错误。任何人都有一个想法如何解决这个问题?
答案 0 :(得分:5)
第一个很简单:你试图将Micrsosoft的CString
与std::string
混合,但他们对彼此一无所知。作为一般规则,您可能想要选择一个并专门使用它(我更喜欢std::string
作为规则,但如果您使用的是使用CString
的MFC或ATL的其他部分,可能没有多少选择。)
如果你真的无法避免混合它们,你可以使用c_str()
来获得CString
知道如何使用的C风格字符串:
CString lancuch1;
lancuch1 = "Znaleziono ";
lancuch1 += liczba1.str().c_str();
lancuch1 += " pozycji.";
或(首选):
std::string lanuch1 = "Znaleziono "s + liczba1.str() + " pozychi."s;
对于第二个,听起来你没有在你需要的地方取消引用迭代器,但是因为你没有指出生成错误的代码的特定部分,所以有点难以肯定地说。可能在这些方面虽然:
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);