Компилятор выдает довольно подробное предупреждение:
предупреждение сравнение со строковым литералом приводит к неопределенному поведению [ -Waddress ] if(str[i]!=",")
при компиляции с-Wall
flag
строковый литерал в этом случае ","
Изменяя сравнение между str[i]
(который является char
) и символом запятой char comma = ','
кодаскомпилировано и после выполнения вернуло foo\nbar
с тестовым вводом foo,bar
...
char comma = ',';
for (unsigned int i = 0; i < str.length(); i++)
{
// previously str[i] != ",";
if(str[i] != comma)
cout<<str[i];
else
cout<<"\n";
}
...