Я относительно новичок в 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
Заранее спасибо! Любая помощь будет отличной!
Вы слишком стараетесь, это
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. Но в случае со строкой у вас уже есть строка, поэтому нет необходимости выполнять преобразование и нет необходимости в потоке строки.
Других решений пока нет …