从C++ string一行行读取数据

有一个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;
}