删除字符串

时间:2018-02-21 08:41:13

标签: c++ arrays

首先,我有.txt文件,如下所示:

Abraham Jackson, 10, 15, 10, 13, 8, 18,
Joe Harrier, 13, 4, 5, 27, 12, 14,
Thomas High, 21, 2, 4, 15, 7, 3,
Jeffrey John, 4, 9, 8, 5, 27, 12,
Jason Smith, 3, 25, 8, 7, 4, 13,
$

我的代码(用于从.txt文件中读取数据并将其存储到数组中):

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{

    const int studentsSIZE = 5; 
    string students[studentsSIZE]; 
    string stringscores[30];
    ifstream inputFile;
    inputFile.open("data.txt"); //OPEN THE .TXT FILE
    int k = 0;
    for (int i = 0; i < 5; i++) //READ AND STORE DATAS 
    {
        (getline(inputFile, students[i], ',' )); 
        {
            (getline(inputFile, stringscores[k], ',')); 
            k++;
        }
    }

到目前为止,我已经阅读了.txt文件,并按照预期将所有名称存储到数组(学生)中。

我的问题是如何删除数组中的\ n。

目前,数组存储的数据如下:

  

{“亚伯拉罕杰克逊”,“\ nJoe Harrier”,“\ nThomas High”,“\ nJeffrey John”,“\ nJason Smith”}

图片:https://i.imgur.com/iDvTRpa.png

我试过把inputFile.ignore()放在行之前“(getline(inputFile,students [i],','));”为了删除\ n,但这样做会导致程序删除非常它将从文本文件中读取的第一个字母'A'。

  

{“braham Jackson”,“Joe Harrier”,“Thomas High”,“Jeffrey John”,“Jason Smith”}

2 个答案:

答案 0 :(得分:0)

检查一行的第一个字符是否等于'\ n'并删除它,如果为真。

    .....
    for (int i = 0; i < 5; i++) //READ AND STORE DATAS 
    {
        getline(inputFile, students[i], ',' ); 
        if(students[i].size() > 0 && students[i][0] == '\n')
        {
           students[i] = students[i].erase(0,1);
        }
        .......

BTW:

  • 检查返回值
  • 您对分数的读入将无法正常使用。)

答案 1 :(得分:0)

getline停止&#39;,&#39;因为你已经指示它这样做。 在一行中的最后一个,后面有换行符,但尚未捕获。

您的代码仍然无效,甚至无法生成您已粘贴的输出:(

我的问题解决方案是修剪用户名或使用带有分隔符getline的额外\n来捕获最后一行,后的垃圾。