如何用字符和整数c ++读取文件

时间:2017-05-01 04:18:28

标签: c++

我90%完成了我的家庭作业项目,但最后一步是踢我的屁股。

我有一个文本文件,我将使用每行命令读取我的程序。

大多数命令都是一个字母,但其中一个是带有整数的字母。

我理想情况下需要阅读该行,如果它只是一个字符,直接进入我已经为"命令"编写的函数。如果它有特定的字符," F"在这种情况下,我需要它还读取将由空格分隔的整数,并将其传递给该命令的其他函数。

实施例

.txt文件;

ř
大号
大号
F 20
[R
ř

对于那些好奇的人,我模仿使用了小海龟的Logo语言的功能"为我的作业制作标志动画。

修改的 我确实尝试过研究一些方法来做到这一点但是我想出的大多数方法要么只抓住了一个字符,要么就是我可以拉出每个字符串的字符串" line"但随后必须读取并转换字符串中的内容以分隔char和int。如果这真的是最好的"做到这一点的方法我会把它吸干然后做,但我想知道是否有一些事情对我来说是不明显的。

2 个答案:

答案 0 :(得分:0)

这将是我的方法:

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main() {

    ifstream readFromFile("test.txt");
    vector<string> fileWords;

    string word;

    while (readFromFile >> word) {

        try {
            int number = stoi(word); // here is your number
            cout << number << endl;
        } catch (const invalid_argument& exception) {
            cout << exception.what() << endl; // just for debug
        }

        fileWords.emplace_back(word);
    }

    for (const auto& word: fileWords) {
        cout << word << ' ';
    }

    readFromFile.close();
}

逐字读取,将其保存在数组中,并检查单词是否为整数(使用std :: stoi函数)。

答案 1 :(得分:0)

OP解决方案。

已解决有点。
我最终改变了我的fstream输入;

integer = 0;
char ch;
while(infile >> ch)
    if (ch == "F")
    {
        infile >> integer;
    }
// do stuff with code, I used a switch

然后在切换之后我把整数放回0。

这会提取我需要的数据并将其存储在正确的变量中。