我想从字符串中删除换行符。
到目前为止,我只能找到remove()函数,但我认为begin()和end()不支持const char *类型的字符串。
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
const char *a = "\n remove all \n the new line characters \n";
cout << a << "\n";
remove(a.begin(),a.end(),"\n");
cout << a;
}
错误 -
ctest.cpp: In function ‘int main()’:
ctest.cpp:9:11: error: request for member ‘begin’ in ‘a’, which is of non-class type ‘const char*’
remove(a.begin(),a.end(),"\n");
^
ctest.cpp:9:21: error: request for member ‘end’ in ‘a’, which is of non-class type ‘const char*’
remove(a.begin(),a.end(),"\n");
我还在互联网上找到了remove_if函数,但它只支持&#34; isspace&#34;,&#34; isdigit&#34;过滤器类型。没有&#34; isnewline&#34;直接&#34; \ n&#34;扔错了。我还发现了一些传统的解决方案,这些解决方案基本上会对整个字符串进行循环,但我正在避免使用这些原始解决方案,因为我对这种语言并不熟悉。
答案 0 :(得分:2)
首先,通过将a
置于数组中使const char*
可写,因为您无法修改std::begin
的内容。然后使用std::end
和char a[] = "\n remove all \n the new line characters \n";
cout << a << "\n";
remove(std::begin(a), std::end(a), '\n');
cout << a;
非成员函数来获取序列的两端:
std::string
注意:不言而喻,在C ++中使用toString
更好的方法是使用System.out.println(Arrays.deepToString(newArray));
。