如何使用substr函数读取第一列值(name,name2和name3)?
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();
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
像这样:
int pos = s.find(';');
if (pos == string::npos) ... // Do something here - ';' is not found
string res = s.substr(0, pos);
您需要找到第一个';'
的位置,然后从零开始substr
到该位置。这是demo on ideone。
答案 2 :(得分: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'); }