刚刚学习c ++入门书.事情进展顺利,但是,当使用范围来替换所有带有空字符的标点符号时,它们将替换为空格('').我不明白为什么:/我如何改变这一点,以便标点符号被替换为没有字符,而不是空格?
码:
#include <iostream>
#include <string>
#include <cctype>
using std::cout;
using std::endl;
using std::string;
int main()
{
string s1("Hi I'm Greg.");
cout << s1 << endl;
for(char &c : s1){
if(ispunct(c)){
c = '\0';
}
}
cout << s1 << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
对不起,如果它是一个愚蠢的问题...干杯!
编辑:用c ++编译14这是我的输出:
嗨,我是格雷格
NUL角色首先是一个角色.这不是什么; 这是一个NUL角色.也就是说,字符串"一些\ 0thing"是不一样的东西"东西".您的特定控制台将"\ 0"字符呈现为空格,但不同的控制台可将其呈现为空.但这并没有改变NUL角色并非一无是处的事实.
如果要删除字符,那么您需要做的是将所有以下字符向下移动.