如何从文本文件C ++中读取整数和特殊字符

时间:2018-05-22 07:35:56

标签: c++ text-files

我有这个txt文件:

{8500, X }
{8600, Y }
{8700, Z }
{8800, [ }
{8900, \ }
{9000, ] }
{9100, ^ }
{9200, _ }
{9300, ` }
{9400, a }
{9500, b }
{9600, c }

到目前为止,这是我的代码:

void file_reader(){

    std::ifstream file("1000Pairs.txt", ifstream::in);
    std::string str; 

    while (std::getline(file, str)){

        !isalpha(c); } ), str.end());
        str.erase(std::remove(str.begin(), str.end(), '{', ',', '}'), str.end());

        cout << str << endl;

        //int_reader(str, array);  // adds the integers to the array
    }       
    file.close(); 
}

给出一个整数,如何在C ++中返回相应的字符? 感谢!!!

1 个答案:

答案 0 :(得分:2)

如上所述,通过尝试erase,迭代并键入 - 检查每个字符是否为行,您正在使它变得比它需要的更难。如果您的格式与{num, c }一样,那么您可以使用stringstream上的line来大大简化阅读。这样你就可以使用普通的>>输入操作符和正确的类型来读取你想要的数据,并丢弃你不喜欢的字符,例如:

#include <sstream>
...
void file_reader(){
    int num;
    char c;
    ...
    while (std::getline(file, str)){
        char c1, c2;
        std::stringstream s (str);
        s >> c1;                // strip {
        s >> num;               // read num
        s >> c1 >> c2;          // strip ', '
        s >> c;                 // read wanted char
        /* you have 'num' and 'c' - test or map as needed */
        ...
    }
}

您可能需要在此处或那里调整它,但这种方法相当简单和强大。 (从技术上讲,您可以在每次阅读后检查流状态,以检查badbitfailbit,但我会将其留给您()