我用C++创建了一个程序,它,从给定的整数中删除逗号().即2,00,00会返回20000.我没有使用任何新的空间.这是我创建的程序:
void removeCommas(string& str1, int len)
{
int j = 0;
for (int i = 0; i < len; i++)
{
if (str1[i] == ',')
{
continue;
}
else
{
str1[j] = str1[i];
j++;
}
}
str1[j] = '\0';
}
void main()
{
string str1;
getline(cin, str1);
int i = str1.length();
removeCommas(str1, i);
cout << "the new string " << str1 << endl;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的结果:
Input : 2,000,00
String length =8
Output = 200000 0
Length = 8
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么它显示8输出中的长度,并在我输入空字符时显示字符串的其余部分.它应该显示输出200000和长度6.
Fre*_*son 16
让标准库为您完成工作:
#include <algorithm>
str1.erase(std::remove(str1.begin(), str1.end(), ','), str1.end());
Run Code Online (Sandbox Code Playgroud)
如果您不想修改原始字符串,那也很容易:
std::string str2(str1.size(), '0');
str2.erase(std::remove_copy(str1.begin(), str1.end(), str2.begin(), ','), str2.end());
Run Code Online (Sandbox Code Playgroud)
最后你需要做一个调整大小.
与流行的看法相反,std :: string CAN包含包含0的二进制数据.std :: string .size()与包含NULL终止的字符串无关.
std::string s("\0\0", 2);
assert(s.size() == 2);
Run Code Online (Sandbox Code Playgroud)