从文件中读取整数
read integer from a file
我正在制作一个从文本文件中读取整数并将其显示在屏幕上的程序。我想使用 stringstream,但我不确定它是如何工作的。
文本文件还包含例如以下单词:
She bought a tshirt for 25 shoes for 50 and a book for 5
在屏幕上应该只看到 25、50 和 5。现在我看到的输出只是一个 0。
我的代码:
#include <iostream>
#include "std_lib_facilities.h"
using namespace std;
string file = "file.txt";
void f() {
vector<int> num;
ifstream ist {file};
if (!ist) error("can't open input file", file);
string textline;
while (getline(ist, textline)) {
istringstream text(textline);
int integer;
text >> integer;
num.push_back(integer);
}
for (int i = 0; i < num.size(); i++) {
cout << num[i] << endl;
}
}
int main()
{
f();
return 0;
}
是否可以用不同的方式来做?有人可以向我解释吗?
您应该逐字阅读,而不是逐行阅读,并且在存储之前需要检查您是否成功阅读了一个数字。
现在,您只尝试了行中的第一个字,但失败了。
试试这个:
string word;
while (ist >> word) {
istringstream text(word);
int integer;
if (text >> integer)
{
num.push_back(integer);
}
}
我正在制作一个从文本文件中读取整数并将其显示在屏幕上的程序。我想使用 stringstream,但我不确定它是如何工作的。
文本文件还包含例如以下单词:
She bought a tshirt for 25 shoes for 50 and a book for 5
在屏幕上应该只看到 25、50 和 5。现在我看到的输出只是一个 0。 我的代码:
#include <iostream>
#include "std_lib_facilities.h"
using namespace std;
string file = "file.txt";
void f() {
vector<int> num;
ifstream ist {file};
if (!ist) error("can't open input file", file);
string textline;
while (getline(ist, textline)) {
istringstream text(textline);
int integer;
text >> integer;
num.push_back(integer);
}
for (int i = 0; i < num.size(); i++) {
cout << num[i] << endl;
}
}
int main()
{
f();
return 0;
}
是否可以用不同的方式来做?有人可以向我解释吗?
您应该逐字阅读,而不是逐行阅读,并且在存储之前需要检查您是否成功阅读了一个数字。
现在,您只尝试了行中的第一个字,但失败了。
试试这个:
string word;
while (ist >> word) {
istringstream text(word);
int integer;
if (text >> integer)
{
num.push_back(integer);
}
}