刚刚阅读了 C++ 入门书。事情进展顺利,但是,当使用范围 for 以将所有标点符号替换为空字符时,它们将替换为空格 (' ')。 我不明白为什么:/ 我该如何更改它,以便标点符号被替换为无字符,而不是空格?
代码:
#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 中编译 这是我的输出:
Hi I m Greg
最佳答案
NUL 字符首先是一个字符。这不是什么;这是一个 NUL 字符。也就是说,字符串“some\0thing”与“something”不是相同的东西。您的特定控制台将“\0”字符呈现为空格,但不同的控制台可以将其呈现为空。但这并没有改变 NUL 字符并非什么都不是的事实。
如果您想删除一个字符,那么您要做的就是将以下所有字符向下移动。
关于c++ - 如何制作空字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40515491/