Я использую getline для чтения до конца новой строки, но c ++ getline выводит меня до конца,
У меня есть данные TXT-файла как
адрес (вкладка char) 1420 Happy Lane
Когда я делаю
getline (reader, ss, '\ t') Я получаю адрес в строке ss.
когда я получаю getline (читатель, ss, '\ n'), я просто получаю 1420.
Я хочу полный "1420 Happy Lane", Как его получить?
Спасибо.
#include <fstream>
#include <string>
#include <iostream>
#include <vector>
#include <sstream>
using namespace std;
int main( int argc, char *argv[] )
{
if( argc < 2 )
{
cout << "Missing filename as first argument" << "\n";
exit(2);
}
vector<string> myvector;
string ss;
int i=0, j=0;
ifstream reader(argv[1]);
if (! reader )
{
cout << "Error opening input file : " << " " << argv[1] << '\n';
return -1;
}
while( !reader.eof())
{
if ((i+1) % 2 == 0 )
getline(reader, ss, '\n');
else
getline(reader, ss, '\t');
if (ss[0] == '#')
{
//Skip
getline(reader,ss, '\n');i=0;
continue;
}
i++;
myvector.push_back(ss);
}
reader.close();
vector<string>::iterator it;
stringstream stream;
int vecloc=1;
string tag;
string sData;
cout << "myvector contains: \n";
for ( it=myvector.begin() ; it < myvector.end(); it++ )
{
switch (vecloc)
{
case 1: stream << *it; stream >> tag; vecloc++;break;
case 2:
stream << *it; stream >> sData;
// Do job
cout << tag << " " << sData << "\n";
// Reset.
vecloc=1; break;
default : break;
}
// Clear String stream
stream.str(""); stream.clear();
}
return(0);
}
выход
/ дом / ср / УБТ
кошка abc.txt
эй с ++ сводит меня с ума.
/ дом / стер / УБТ
a.out abc.txt
myvector содержит:
эй, с ++