Operator ? i błąd kompilacji

Operator ? i błąd kompilacji
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#include <iostream>
int main()
{
	std::string str = "Ala;ma;kota;a;kot;ma;ale";
	std::string out[7];
	int i = 0;
	for(auto&c:str)
		((c != ';') ? out[i]+=c : ++i);
	for(auto&c:out)
		std::cout<<c;
}

Program ma kopiować do tablicy out słowa oddzielone znakami ';' ale dostaje błąd kompilacji:

Kopiuj
main.cpp:8:15: error: operands to ?: have different types 'std::__cxx11::basic_string<char>' and 'int'
   ((c != ';') ? out[i]+=c : ++i);
kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
4

operator?: w wywołaniu t ? u : v wymaga aby u było konwertowalne do typu v lub odwrotnie (ew., aby były tego samego typu). Ty wywołujesz bool ? string : int, co nie ma sensu. Użyj ifa jak człowiek.

  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za odpowiedź

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.