您的位置:首页 > 其它

如何去掉string中包含的续行符(“\”)

2016-07-26 10:58 337 查看
在写配置文件中,遇到了一个很长的字符串需要处理,而这个字符串中添加了续行符”\”,在把数据写到配置文件中时,续行符会导致下一行的数据前面出现很多空格,十分不美观。那么该如何去掉续行符呢?

一开始我想直接使用string中的find函数来查找“\”,但测试之后发现找不到续行符,调试中也看不到,但输出到配置文件中,则有许多空格。我注意到我需要保存的数据都是以大小写字母或者数字开头的,那么把在第一个字母或者数字之前的内容全部去掉,只保留从第一个字母或数字开头的字符串,是否可以成功呢。

是的,我成功了,虽然取了巧,但是还蛮有成就感,嘿嘿。

测试代码如下:

#include <Windows.h>
#include <iostream>

using namespace std;

int main()
{
const string strInformation("\
student1 zhangsan,\
student2 lisi,");//需要写入的字符串,演示特意添加了续行符
const string savePath("D:\\student.ini");//定义文件保存路径

int startPos;//find函数使用
int endPos; //find函数使用
string tempStr; //临时字符串

//读取第一个学生信息
startPos=0;
endPos = strInformation.find(",",startPos);//取第一个逗号之前的数据
if (-1 == endPos)
{
return -1;//这里做测试,我们肯定可以找到,故不做过多处理
}
tempStr = strInformation.substr(startPos,endPos-startPos);//获取 \student1 zhangsan
WritePrivateProfileString("StudentInformation","1",tempStr.c_str(),savePath.c_str());//写入ini文件中

//读取第二个学生信息
startPos = endPos+1;
endPos = strInformation.find(",",startPos);//取第二个逗号之前的数据
if (-1 == endPos)
{
return -1;//这里做测试,我们肯定可以找到,故不做过多处理
}
tempStr = strInformation.substr(startPos,endPos-startPos);//获取 \student2 lisi
//去掉续行符
int a = tempStr.find_first_of("abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ0123456789");//寻找第一个字母或数字的位置
tempStr = tempStr.substr(a);//从字母或数字开始的位置开始复制,复制到最后,去掉了前面的续行符
WritePrivateProfileString("StudentInformation","2",tempStr.c_str(),savePath.c_str());//写入ini文件中

system("pause");
return 0;
}


配置文件中的内容如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string