关于字符串去除换行符的问题

hanjianbo 2008-02-28 10:56:47
今有一字符串,类型为string,已知换行符在字符串的中间位置(不是在末尾),请问如何消除该换行符?
...全文
1377 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yu421365225 2010-04-28
  • 打赏
  • 举报
回复
<br>
yu421365225 2010-04-28
  • 打赏
  • 举报
回复




dsfasdfas
hanjianbo 2008-02-28
  • 打赏
  • 举报
回复
to lokii
你的代码执行结果和我的一样,都是不正确。谢谢
lokii 2008-02-28
  • 打赏
  • 举报
回复

void erase(string &s, char ch) {
for(int i=0; i<s.length(); i++) {
if(s[i]==ch) {
s.erase(i, 1);
i--;
}
}
}

erase(s, '\n');
hanjianbo 2008-02-28
  • 打赏
  • 举报
回复
string stLine = "";//含有换行符的字符串
for (size_t nPos = stLine.find("\n",0);nPos != string.npos;nPos = stLine.find("\n",nPos + 1))//nPos是换行符的位置
{
stLine.replace(nPos,1,"");//将换行符替换成空字符
}
我是这样编码的,为什么不行,哪错了?
taodm 2008-02-28
  • 打赏
  • 举报
回复
for循环遍历
dubiousway 2008-02-28
  • 打赏
  • 举报
回复
是不是 windows 下,换行字符 是两个 "\r\n",不是只有一个 \n 吧 .

0x0d0a
ttkk_2007 2008-02-28
  • 打赏
  • 举报
回复

int main(void)
{
string str = "sdijf\njosdf\njdf";
cout << str << endl;
str.erase(remove(str.begin(), str.end(), '\n'), str.end());
cout << str << endl;
return 0;
}
vrace 2008-02-28
  • 打赏
  • 举报
回复

void removeendl(string &s)
{
while(1)
{
string::iterator it = find(s.begin(), s.end(), '\n');
if(it == s.end())
{
break;
}

s.erase(it);
}
}

64,439

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧