如何制作一个null char?

时间:2016-11-09 20:30:41

标签: 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;
}

对不起,如果它是一个愚蠢的问题...... 干杯!

编辑: 用c ++编译14 这是我的输出:

  

嗨,我是Greg

2 个答案:

答案 0 :(得分:5)

NUL角色首先是角色。这不是什么;这是一个NUL角色。也就是说,字符串“some \ 0thing”与“某事”相同。您的特定控制台将“\ 0”字符呈现为空格,但不同的控制台可将其呈现为空。但这并没有改变NUL角色不是什么的事实。

如果你想删除一个角色,那么你要做的就是将所有以下角色都移开。

答案 1 :(得分:3)

空字符不是可打印字符。因此,您无法在控制台中看到写入cin的空字符的任何内容。