Я пишу базовый код для выполнения некоторых операций над строками. Когда я пытаюсь запустить свою программу, она зависает и не дает результата. Кто-нибудь может указать ошибку и рекомендовать необходимые изменения/оптимизацию. благодаря
#include<iostream>
#include<string>
#define MAX 100
using namespace std;
int main(){
int i=0,j=0;
string ch,out;
cin>>ch;
while(ch[i]!='\0'){
string dot=".";
if(ch[i]=='A'||ch[i]=='E'||ch[i]=='I'||ch[i]=='O'||ch[i]=='U'
||ch[i]=='a'||ch[i]=='e'||ch[i]=='i'||ch[i]=='o'||ch[i]=='u'){
i++;
break;
}
else{
if(isupper(ch[i])){
out+=dot;
out+=tolower(ch[i]);
}
else {out+=dot;
out+=ch[i];
}
}
}
cout<<out;
}
Если вы посмотрите на документацию для std::basic_string::append
вы увидите, что единственная версия функции, которая принимает один символ в качестве аргумента:
basic_string& append( size_type count, CharT ch );
и также ожидает, что size_type count
указывает количество символов, добавляемых в строку.
В вашем случае, поскольку вы просто хотите добавить один символ, вы должны использовать:
out.append(1, ch[i]);
а также
out.append(1, tolower(ch[i]));
Вы не можете добавить char
используя out.append
. Если вы хотите добавить одиночный символ, попробуйте
out.append(1, ch[i]);
out.append(1, ch[i])
. Или простоout += ch[i];