我正在尝试编写一个简单的程序,该程序可以从字符串中删除空格,如下所示:
#include <iostream>
#include <bits/stdc++.h>
#include <strings.h>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin,s);
cout<< s;
string c;
int i =0,j=0;
while(s[i]!='\0'){
if(s[i] == ' ')
i++;
else{
c[j] = s[i];
j++;
i++;
}
}
c[j] ='\0';
cout << c; //unable to print
}
在这里,当我尝试打印c时,似乎无法获得结果。当我使用c作为字符数组时,它可以工作,但我仍然想知道自己在做什么错。非常感谢
答案 0 :(得分:1)
string c;
创建一个空字符串。之后,
c[j] = s[i];
是未定义行为的原因。
您可以使用多种策略解决问题。这里有几个:
c
,使其足够大string c(s.size(), '\0');
std::string::push_back
代替
c[j] = s[i];
...
c[j] ='\0';
使用
c.push_back(s[i]);
...
c.push_back('\0');