不能用ifstream阅读空格

时间:2013-04-17 20:42:02

标签: c++ string whitespace ifstream sstream

我对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 个答案:

答案 0 :(得分:2)

你太努力了,这个

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做到这一点。但是在字符串的情况下,你已经有了一个字符串,所以没有转换要做,也不需要stringstream。