getline () принимает конец строки и начало следующей строки - PullRequest
0 голосов
/ 05 мая 2018

У меня проблема с одной из моих задач. У меня есть файл Excel, который выглядит так:

File I take information from

Проблема в том, что getline() принимает строки, пока не найдет ',', но в конце строки нет ','. Существует так много данных, что я не могу разместить их повсюду.

У меня вопрос, как я могу поставить ',' в конце строки с моим кодом?

Вот мой код.

#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void names(string value);
void names1(string value);
int main()
{
    ifstream file ("15mil.csv"); // declare file stream: 
    string value;

    for(int i=0; i<100; i++) {
        getline (file, value, ',');
        names(value);
    }

}

void names(string value) {
    if(value.find('.') != std::string::npos) {
        cout << "float: " << value << endl;
    }
    if(value.find('/') != std::string::npos) {
        cout << "data: " << value << endl;
    }
    if(value.length() == 1) {
        cout << "char: " << value << endl;
    }

    if(value.length() > 1) {
        if(value.find('1') == std::string::npos && value.find('2') == std::string::npos && value.find('3') == std::string::npos && value.find('4') == std::string::npos && value.find('5') == std::string::npos && value.find('6') == std::string::npos && value.find('7') == std::string::npos && value.find('8') == std::string::npos && value.find('9') == std::string::npos && value.find('0') == std::string::npos) {
            cout << "string: " << value << endl;
        }

        else if(value.find('.') == std::string::npos && value.find('/') == std::string::npos && value.length() != 1) {
            cout << "int: " << value << endl;
        }
    }

    if(value.length() > 1 && value.find('S') != std::string::npos) {
        cout << "string: " << value << endl;
    }


}


void names1(string value) {
    if(value.length() > 1) {
        if(value.find('1') == std::string::npos && value.find('2') == std::string::npos && value.find('3') == std::string::npos && value.find('4') == std::string::npos && value.find('5') == std::string::npos && value.find('6') == std::string::npos && value.find('7') == std::string::npos && value.find('8') == std::string::npos && value.find('9') == std::string::npos && value.find('0') == std::string::npos) {
            cout << "string: " << value << endl;
        }
}
}

1 Ответ

0 голосов
/ 05 мая 2018

Добавьте его в getline и после, с помощью value += ','; или value.push_back(',');, прямо здесь:

for(int i=0; i<100; i++) {
    getline (file, value, ',');

    value += ','; // Or value.push_back(',');
    names(value);
}
...