Operator ? i błąd kompilacji

0
#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:

main.cpp:8:15: error: operands to ?: have different types 'std::__cxx11::basic_string<char>' and 'int'
   ((c != ';') ? out[i]+=c : ++i);
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.

0

Dzięki za odpowiedź

1 użytkowników online, w tym zalogowanych: 0, gości: 1