使用C++;windows应用程序 我的问题是,我试图加载Linux格式化的文本文件,并定期阅读它,因为一个是打开一个Windows格式化的文本文件在C++应用程序。我已经让它完美地工作时,文件的格式正是我希望它在windows中的格式,并有数据形式的文件加载到列表列表

使用C++;windows应用程序 我的问题是,我试图加载Linux格式化的文本文件,并定期阅读它,因为一个是打开一个Windows格式化的文本文件在C++应用程序。我已经让它完美地工作时,文件的格式正是我希望它在windows中的格式,并有数据形式的文件加载到列表列表,c++,linux,C++,Linux,为了更好地描述我的问题,我现在能够做的是,如果我有一个以制表符分隔的文件,我能够将每行的所有内容存储到一个字符串列表中,其中每个字符串都是每个制表符分隔的内容。然后我有一个所有行的列表 例如,我正在读取的文本文件如下所示: 156 Hit 83.2 23:34 23 Miss 21.4 23:38 等等 下面的代码spinet是我一直在使用的,我在其他地方找到了帮助,并对其进行了修改,使其能够按照我所需要的方式工作。它将在列表中创建一个包含两个项目的列表,其中每个项目都

为了更好地描述我的问题,我现在能够做的是,如果我有一个以制表符分隔的文件,我能够将每行的所有内容存储到一个字符串列表中,其中每个字符串都是每个制表符分隔的内容。然后我有一个所有行的列表

例如,我正在读取的文本文件如下所示:

156   Hit   83.2   23:34
23    Miss  21.4   23:38
等等

下面的代码spinet是我一直在使用的,我在其他地方找到了帮助,并对其进行了修改,使其能够按照我所需要的方式工作。它将在列表中创建一个包含两个项目的列表,其中每个项目都包含一个包含4个字符串的列表,每个字符串表示当前行的每个“列”中的内容。希望解释得足够透彻

    ifstream infile(file);
list <list <string> > data;
while (infile){
    string s;
    if (!getline( infile, s )) break;

        std::istringstream ss ( s );
        list <string> record;

    while (ss){
        string s;
        if (!getline( ss, s, '\t' )) break;
            record.push_back( s );
    }
    data.push_back( record );
}
ifstream-infle(文件);
列出数据;
while(填充){
字符串s;
如果(!getline(infle,s))中断;
std::istringstream ss(s);
列表记录;
while(ss){
字符串s;
如果(!getline(ss,s,'\t'))中断;
记录。向后推_(s);
}
数据。推回(记录);
}

这正是我想做的,然而,我将阅读的文本文件不是格式化为Windows文本文件,而是Linux文本文件,并且在每行的每个“项”之间没有选项卡;而是包含随机数目的空格。我的想法是,我可以以二进制模式打开文件,并以这种方式读取它,而不是用制表符作为分隔符,我可以选择任意数量的空白。然而,我还不确定如何做到这一点,因为我对C++还是比较陌生的,而且还没有专门从Windows C++应用程序中读取Linux格式化的文本文件。任何帮助都将不胜感激。提前谢谢

这与Linux与Windows之间没有任何关系。您可以使用
>
对空格分隔的字段执行格式化输入:

string s;
while (ss >> s)
    record.push_back(s);
要显式跳过空白,请使用
std::ws
;要禁用空白跳过,请使用
std::noskipws