我有这个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 ++中返回相应的字符? 感谢!!!
答案 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 */
...
}
}
您可能需要在此处或那里调整它,但这种方法相当简单和强大。 (从技术上讲,您可以在每次阅读后检查流状态,以检查badbit
和failbit
,但我会将其留给您()