0

如何使用 substr 函数读取第一列值(名称、名称 2 和名称 3)?

name;adress;item;others;
name2;adress;item;others;
name3;adress;item;others;

我写过

  cout << "Read data.." << endl;
    if (dataFile.is_open()) {
        i=-1;
        while (dataFile.good()) {
            getline (dataFile, line);
            if (i>=0) patient[i] = line;
            i++;
        }
        dataFile.close();
    }
4

3 回答 3

0

您可以在读取第一个分号之前忽略内容之后的其余行:

std::vector<std::string> patient;

std::string line;
while (std::getline(file, line, ';'))
{
    patient.push_back(line);
    file.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
于 2013-11-02T14:13:54.780 回答
0
#include <string>
#include <iostream>
#include <fstream>
#include <vector>

int main()
{
    std::fstream f("file.txt");
    if(f)
    {
        std::string line;
        std::vector<std::string> names;
        while(std::getline(f, line))
        {
            size_t pos = line.find(';');
            if(pos != std::string::npos)
            {
                names.push_back(line.substr(0, pos));
            }
        }

        for(size_t i = 0; i < names.size(); ++i)
        {
            std::cout << names[i] << "\n";
        }
    }

    return 0;
}
于 2013-11-02T03:09:49.897 回答
0

像这样:

int pos = s.find(';');
if (pos == string::npos) ... // Do something here - ';' is not found
string res = s.substr(0, pos);

你需要找到第一个的位置';',然后substr从零到那个位置。这是关于 ideone 的演示

于 2013-11-02T03:11:38.683 回答