anruixiao007
2018-05-31 02:00
采纳率: 33.3%
浏览 3.9k
已采纳

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

有一个string字符串,里面放了几行数据,我如何
从中一行行的把数据读出来,每次读出一行。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

13条回答 默认 最新

  • 枫舞的季节 2018-05-31 02:37
    已采纳
    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());
    }
    
    点赞 评论
  • lyp13243189027 2018-05-31 02:09

    \n 或\b用split分割。

    点赞 评论
  • acpalp 2018-05-31 02:10

    #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();

    点赞 评论
  • niansiii 2018-05-31 02:27

    #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();

    点赞 评论
  • Kevin_棋 2018-05-31 02:41

    使用split分割,以“/n”为分割点

    点赞 评论
  • zhibinyuanjing 2018-05-31 02:49

    每一行以固定唯一字符结尾,使用split分隔

    点赞 评论
  • sun44__ 2018-05-31 02:54

    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]);
    }

    点赞 评论
  • 视频小哥 2018-05-31 03:17

    getline(in,strBuff); //strBuff即 一行的数据

    点赞 评论
  • qq_27588531 2018-05-31 06:56

    系统提供了一函数叫 GETline() 根据参数就可以读取一行数据。

    点赞 评论
  • weixin_40367505 2018-05-31 07:31

    使用split函数,并且每一行以固定字符结束本行

    点赞 评论
  • gzr2017 2018-05-31 07:40

    设置特定的标识符,读取时判断是否是行标识,就能分别以行分开读取的

    点赞 评论
  • 洋洋不得意 2018-06-01 03:17

    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);
    }

    点赞 评论
  • ForeBlue 2018-06-02 08:04

    用C++流,
    string str = "abc\ndef";
    stringstream ss(str);
    while(getline(ss, str))
    {
    cout << str <, endl;
    }

    点赞 评论

相关推荐 更多相似问题