【发布时间】:2021-12-17 16:02:45
【问题描述】:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string s;
getline(cin,s);
int n= s.length();
string ans;
ans[0]=s[0];
int j=1;
for(int i=1; i<n; i++){
if(s[i]!=s[i-1]){
ans[j]=s[i];
j++;
}
}
ans[n]='\0';
cout<<ans<<endl;
// for(int i=0; i<n; i++){
// cout<<ans[i];
// }
cout<<endl;
return 0;
}
我无法使用简单的cout<<ans<<endl 打印变量ans。相反,我必须使用循环来打印它。这是为什么呢?
【问题讨论】:
-
"我无法打印变量 'ans'" 这是什么意思?
-
string ans;后跟ans[0]=s[0];会导致未定义的行为。字符串ans是 empty 并且任何和所有对它的索引都将超出范围。当您继续这样做时,这可能是您的问题的原因。使用例如ans += s[0]追加字符。 -
至于你的问题,除非是为了学校作业或类似用途
std::unique。 -
是的,在字符串中附加字符有效。