基本的には、文字列sに入力されたすべての数字を削除して文字列を表示しようとしています。しかし、文字列cはprint.Also c.empty()は真の値を与えません。なぜこれが起こり、それを解決するのか?C++で文字列を初期化することは重要ですか?
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string s;
string c;
getline(cin,s);
int l=0;
for(decltype(s.size()) i=0;i<=s.size();i++)
{
if(!isdigit(s[i]))
{
c[l]=s[i];
l+=1;
}
}
cout<<c<<endl; //no visible output
cout<<c.empty(); //this prints 1
return 0;
}
'のC [L] = sのように、文字列に文字を追加する[i]は、'間違っています。最初に 'resize()'を呼び出す必要があります。 – user0042
ループは1つの余分な時間を実行しています。 – CinCout
@CinCout、幸いにも、文字列に関しては、 's [s.size()]'はまだ有効です。それは単にヌル文字です。 –