提问人:Zeta Zav 提问时间:11/13/2018 最后编辑:CommunityZeta Zav 更新时间:11/13/2018 访问量:234
C++ 读取输入文件
C++ Read an input file
问:
我在读取文件和保存值时遇到问题。
因此,输入文件包含:
0 伏
W2 R3 W3 R4
我想要的是这个:
F = 3
P = 5
字符 Ac[] = {'W','R','W','R'};
int acc[] = {2,3,3,4};
我已经有了 F = 3 和 P = 5,但我不知道如何分离其他字符串。
我希望你能帮助我!
答:
0赞
Thomas Matthews
11/13/2018
#1
您可以逐个字符读取,跳过空格。
或者你可以读一个字符串,然后拆分字符串:
std::string rw_text;
std::vector<char> Ac;
std::vector<int> acc;
//...
while (input_file >> rw_text)
{
const char letter = rw_text[0];
const int number = rw_text[1] - '0';
Ac.push_back(letter);
acc.push_back(number);
}
您还可以使用 a 将字母和数字放在一起,例如 .struct
pair
struct Letter_Number
{
char letter;
int number;
friend std::istream& operator>>(std::istream& input, Letter_Number& ln);
};
std::istream& operator>>(std::istream& input, Letter_Number& ln)
{
input >> ln.letter;
input >> ln.number;
return input;
}
//...
std::vector<Letter_Number> database;
Letter_Number ln;
//...
while (input_file >> ln)
{
database.push_back(ln);
}
结构将使字母与其编号相关联。在并行数组中,您可以有不同的偏移量,否则该对不会对齐。
此外,通过具有结构,字母和数字将位于处理器的同一数据缓存行上,因此您的程序将更有效率。否则,处理器将不得不加载到数组中,获取值,然后加载到数组中并加载字符;浪费时间重新加载数据缓存。Ac
acc
评论