我在读取文件和保存值时遇到问题。
因此,输入文件包含:
3 5
W2 R3 W3 R4
我想要的是这个
F = 3
P = 5
char Ac [] = {'W','R','W','R'};
int acc [] = {2,3,3,4};
我已经有F = 3和P = 5,但是我不知道如何分隔其他字符串。
希望你能帮助我!
答案 0 :(得分:0)
您可以逐字符读取字符,跳过空格。
或者您可以读入一个字符串,然后分割该字符串:
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);
}
您还可以使用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
数组并加载字符;浪费时间重新加载数据缓存。