如何制作一个null char?

Kyl*_*lue 0 c++ c++14

刚刚学习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这是我的输出:

嗨,我是格雷格

Nic*_*las 5

NUL角色首先是一个角色.这不是什么; 这是一个NUL角色.也就是说,字符串"一些\ 0thing"是一样的东西"东西".您的特定控制台将"\ 0"字符呈现为空格,但不同的控制台可将其呈现为空.但这并没有改变NUL角色并非一无是处的事实.

如果要删除字符,那么您需要做的是将所有以下字符向下移动.