不会使用 ifstream 读取空格

Won´t read whitespace with ifstream

本文关键字:读取 空格 ifstream      更新时间:2023-10-16

我对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;
}

我的文件可能看起来像这样:

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