试图从c ++中的文本文件中仅从一行中提取字符串的一部分

时间:2013-05-30 22:37:03

标签: c++

好的,这是我第二次为我的程序寻求帮助,我知道我几乎得到了它,但我无法弄明白。所以现在我正在尝试编写一个程序,让用户以dd / mm / yyyy格式输入日期,并将其作为月份日期,年份返回。所以1990年1月1日成为1990年1月1日。我需要使用一个文本文件,其中包含相应数字旁边的月份名称。所以文本文件的列表如下所示:

01January
02February
03March

..等等。

到目前为止,我有这个:

// reading a text file
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main ()
{
    string thedate; //string to enter the date
    string month; // this string will hold the month
    ifstream myfile ("months.txt");
    cout << "Please enter the date in the format dd/mm/yyyy, include the slashes: " <<      endl;
    cin >> thedate;

    month = thedate.substr( 3, 2 );
    string newmonth;

    if (myfile.is_open())
    {
        while ( myfile.good() )
        {
            getline (myfile,newmonth);
            newmonth.find(month);



            cout << newmonth << endl;

        }
        myfile.close();
    }

    else cout << "Unable to open file"; 

    return 0;
}

所以我已经能够从用户输入中提取月份,并将其存储为月份,我只是不太确定如何搜索该月份的文本文件,并仅将该月份的名称返回到新的字符串中,只有那条线。现在,如果我输入02/05/1990,它将输出

05
05
05
05
05
.. for 12 lines. 

我是编程新手,所以感谢任何帮助。

另外,我只有大约3周的时间进入编程课程,而且我们还没有真正学过函数或数组。因此,如果您有任何帮助,请避免使用数组和函数。我也理解不能从文本文件中读取更容易,但是我的课程要求从文本文件中读取它,所以我需要它。

感谢。

1 个答案:

答案 0 :(得分:0)

string::find函数(您已使用过的函数)返回搜索字符串的位置( - &gt; month)。您现在可以使用string::substr函数来提取您要查找的字符串部分。

希望有助于开始。