有一个string字符串,里面放了几行数据,我如何
从中一行行的把数据读出来,每次读出一行。
string str="hello\nwelcome\nxxxx\n";
string::iterator it=str.begin();
vector<string> vec;
string tmp;
for (; it != str.end();it++)
{
char c = *it;
if (c == '\n')
{
tmp += c;
}
else
{
vec.push_back(tmp);
tmp.clear();
}
}
for each (auto var in vec)
{
printf("%s\n", var.c_str());
}
\n 或\b用split分割。
#include
fstream in;
CString strFileName = "E:\测试\a.txt"; //路径是双斜杠
in.open(strFileName,ios::in); //ios_base::in
while( !in.eof()) //如果没有读到文件结尾
{
string strBuff;
getline(in,strBuff); //strBuff即 一行的数据
}
in.close();
#include
fstream in;
CString strFileName = "E:\测试\a.txt"; //路径是双斜杠
in.open(strFileName,ios::in); //ios_base::in
while( !in.eof()) //如果没有读到文件结尾
{
string strBuff;
getline(in,strBuff); //strBuff即 一行的数据
}
in.close();
使用split分割,以“/n”为分割点
每一行以固定唯一字符结尾,使用split分隔
string mydata = "1 2 3 4 5 6 \n7 8 9 3 2 1\n a b c d e f\n";
string[] readline;
readline = mydata.Split('\n');//按行复制到readline中
for (int i=0;i<readline.Length;i++)
{
MessageBox.Show(i.ToString()+"-----"+readline[i]);
}
getline(in,strBuff); //strBuff即 一行的数据
系统提供了一函数叫 GETline() 根据参数就可以读取一行数据。
使用split函数,并且每一行以固定字符结束本行
设置特定的标识符,读取时判断是否是行标识,就能分别以行分开读取的
std::string a = "123\r\n456\r\n\r\n789\r\n";
std::string line;
//每次取一行执行下面的语句
int pos = a.find("\r\n");
if(pos != std::string::npos)
{
line = a.substr(0,pos);
a.erase(0,pos+2);
}
用C++流,
string str = "abc\ndef";
stringstream ss(str);
while(getline(ss, str))
{
cout << str <, endl;
}