我有关于从文件中读取输入行的问题。这是一个我可以管理的非常简单的任务,但问题是输入文件行可以包含单词和数字然后我必须单独读取它们并将它们存储在不同的变量中。让我举一个例子(斜体):
BOOK 100
PENCIL 45
LAPTOP 49
SPOON 34
无论Word和数字之间有多少空格,读取操作都会起作用。
我已经编写了这段代码来直接读取行。但是根据我放弃的信息,我不知道如何解析它们。
string fileName;
cout << "Enter the name of the file: ";
cin >> fileName;
ifstream file;
file.open(fileName);
while(file.fail())
{
cout << "enter file name correctly:";
cin >> fileName;
file.open(fileName);
}
string line;
int points;
while(!file.eof())
{
getline(file, line);
stringstream ss(line);
*I do not know what to do here :)*
}
答案 0 :(得分:3)
但我不知道如何根据我放弃的信息解析它们。
这很简单,见下面的例子:
| Out-String
输出:
std::stringstream ss("SPOON 34");
std::string s;
int n;
if (ss >> s >> n) {
std::cout << s <<"\n";
std::cout << n <<"\n";
}
答案 1 :(得分:0)
您可以使用sscanf
。
char name[100];
int number;
sscanf(line, "%s %d", name, &number);
printf("%s, %d", name, number);
现在我不确定这是否真的是C ++。像您一样使用stringstreams
的替代方案已经开始。