【发布时间】:2014-04-30 07:19:04
【问题描述】:
任何对此的帮助将不胜感激,因为我非常卡住。
对于这个项目,我们必须首先从文件中获取输入。 以下是文件的样子:
----------------------------------------------------------------
Hi Then Finish
End Okay
----------------------------------------------------------------
Here is the layout for it:
Character Set 1: 1-6
Character Set 2: 7 (always a space)
Character Set 3: 8-11
Character Set 4: 12-13 (always 2 spaces)
Character Set 5: 14-19
我想知道是否有一种方法可以为字符串获取一定数量的字符。此外,每个字符集都有不同的变量。
例如:字符集 1 称为 label,字符集 3 称为 code,字符集 5 称为 operation。
我尝试了类似的东西
for (int i = 0; !text.eof(); i++){
getline(text, label[i]);
getline(text, code[i]);
getline(text, operation[i]);
}
如果有帮助,这里是我目前的代码......即使它不能正常工作:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
const int MAX = 100;
string str;
string symLabel[MAX];
string opCode [MAX];
string operand [MAX];
ifstream sim("simprog.txt");
for (int i = 0; !sim.eof(); i++){
getline(sim, str);
symLabel[i] = str.substr(0, 6);
opCode[i] = str.substr(8,11);
operand[i] = str.substr(13, 18);
cout << symLabel[i] << endl;
cout << opCode[i] << endl;
}
}
【问题讨论】:
-
在您的示例中,第二行的标签是什么?会为空吗?
-
是的。我相信它只是空的。它应该像一组指令。就像,如果我有第三行并且标签变量有一些东西,我希望代码像这样读取它:第 1 行有一条指令。第 2 行为空白。第 3 行有一条指令。它仍然会说标签在第三条指令上。希望这是有道理的。
-
另外,文件的布局是固定的吗?该字段是否总是像您描述的那样具有预定宽度?
-
是的。第一列始终为 6 个字符,一个空格,第二列为 4 个字符,最后一列为 2 个空格和 6 个字符。第一列有时只有空格。
标签: c++ file delimiter getline