我正在编写一个基本代码来对字符串执行一些操作。当我尝试运行我的程序时,它会挂起并且不会输出。任何人都可以指出错误,并建议必要的更改/优化。感谢
#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;
}
答案 0 :(得分:0)
如果查看std::basic_string::append
的{{3}},您会看到以单个字符作为参数的函数的唯一版本是:
basic_string& append( size_type count, CharT ch );
并且还希望size_type count
指定要附加到字符串的字符数。
在您的情况下,因为您只想附加一个字符,您应该使用:
out.append(1, ch[i]);
和
out.append(1, tolower(ch[i]));
答案 1 :(得分:0)
您无法使用char
附加out.append
。如果要添加单个字符,请尝试
out.append(1, ch[i]);