Не буду читать пробелы с ifstream

Я относительно новичок в C ++, так что будьте осторожны.
У меня есть текстовый файл, который я хочу прочитать, но когда я читаю файл, он пропускает пробел (пробел) между разделенными словами.

Я пытался убрать как можно больше мусорного кода, чтобы его было легче читать.

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>

using namespace std;

int main(.....)
{
ifstream in_file;
string filename;
string status;
readStringToMem(in_file, status);

cout << "Type in the filename :    ";
getline(cin, filename);
in_file.open(filename);
readStringToMem(in_file, status);
}

void readStringToMem(ifstream& in_file, string& string_value)
{
string input_string;
getline(in_file, input_string, '|');
stringstream myInputStream(input_string);
myInputStream >> string_value;
}

Мой файл может выглядеть так:

Состояние в порядке | 100

Но когда я читаю это, получается так:

Статус 100

Заранее спасибо! Любая помощь будет отличной!

1

Решение

Вы слишком стараетесь, это

void readStringToMem(ifstream& in_file, string& string_value)
{
string input_string;
getline(in_file, input_string, '|');
stringstream myInputStream(input_string);
myInputStream >> string_value;
}

должно быть это

void readStringToMem(ifstream& in_file, string& string_value)
{
getline(in_file, string_value, '|');
}

Намного проще, на самом деле readStringToMem настолько прост, что мне интересно, стоит ли помещать его в отдельную функцию.

Я думаю, что вы, вероятно, были смущены целочисленным регистром. В этом случае вам нужно преобразовать прочитанную строку с помощью getline в целое число. И вы бы сделали это, используя stringstream. Но в случае со строкой у вас уже есть строка, поэтому нет необходимости выполнять преобразование и нет необходимости в потоке строки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]