从.text文件中读取字符串和整数,并仅将输出打印为字符串

时间:2011-03-06 23:29:31

标签: c++

我是C ++的新手,我正在尝试编写一个简短的C ++程序来读取 文件中的文本,每行包含一个整数键和一个字母数字字符串值(没有嵌入的空格)。预先不知道行数(即,保持读取行直到达到文件末尾)。程序需要使用'std :: map'数据结构来存储从输入读取的整数和字符串(以及将整数与字符串相关联)。然后程序需要将字符串值(但不是整数值)输出到标准输出,每行1个,按整数键值(从最小到最大)排序。因此,例如,假设我有一个名为“data.txt”的文本文件,其中包含以下三行:

10只狗 -50马
0猫
-12斑马
14海象

输出应为:


斑马


海象

我已粘贴到目前为止我在C ++程序上取得的进展:

#include <fstream>  
#include <iostream>  
#include <map>
using namespace std;
using std::map;
int main () 
{
string name;
signed int value;
ifstream myfile ("data.txt");

while (! myfile.eof() )
{
getline(myfile,name,'\n');
myfile >> value >> name;
cout << name << endl;
}
return 0;
myfile.close();
}

不幸的是,这会产生以下错误输出:



斑马
海象

如果有人对变更和修订有任何提示,提示,建议等 我需要对程序进行制作,以便根据需要使其工作,是否可以取悦 让我知道?

谢谢!

4 个答案:

答案 0 :(得分:2)

看到它:

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
        string name;
        int value;
        ifstream myfile("text.txt", ifstream::in);
        while(myfile >> value >> name)
                cout << name << endl;
        return 0;
}

答案 1 :(得分:1)

您遇到问题是因为您尝试两次读取每一行:首先使用getline,然后使用运算符&gt;&gt ;.

答案 2 :(得分:0)

你根本没有在任何方面使用std::map。您需要将整数/字符串对插入到映射中,然后作为输出迭代它。并且不需要close()流。

答案 3 :(得分:0)

代替使用“!myfile.eof()”,它会有所帮助。

ifstream is;
string srg;
is.open(filename);
 while(getline(is,srg))
 {//your code
  }