我在一个文本文件中有这个:
John 20 30 40
mike 30 20 10如何从文本文件中读取并将它们分隔为变量名称、var1、var2、var3。这是我的尝试,似乎不起作用。请帮帮忙。
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main () {
string name,result;
int number1;
ifstream myfile ("marks.txt");
if (myfile.is_open())
{
while ( !myfile.eof() )
{
getline (myfile,name,'\t');
getline (myfile,var1,'\t');
getline (myfile,var2,'\t');
getline (myfile,var3,'\t');
cout << name << var1 << var2 << var3;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}编辑1:
夜曲建议:
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream inputFile("marks.txt");
string line;
while (getline(inputFile, line))
{
istringstream ss(line);
string name;
int var1, var2, var3;
ss >> name >> var1 >> var2 >> var3;
cout << name << var1 << var2 << var3 << endl << endl;
}
}输出:
John203040
mike302010
302010为什么又要增加302010?
发布于 2010-10-16 06:50:31
这样的东西应该可以工作(我手头没有编译器,所以你可能需要稍微调整一下):
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
ifstream inputFile("marks.txt");
string line;
while (getline(inputFile, line))
{
istringstream ss(line);
string name;
int var1, var2, var3;
ss >> name >> var1 >> var2 >> var3;
}
}编辑:我又看了一遍,我不知道为什么我之前选择了get line方法。下面的(更简单的解决方案)不起作用吗?
#include <fstream>
using namespace std;
int main()
{
ifstream fin(“marks.txt”);
string name;
int var1;
int var2;
int var3;
while (fin >> name >> var1 >> var2 >> var3)
{
/* do something with name, var1 etc. */
cout << name << var1 << var2 << var3 << “\n”;
}
}发布于 2010-10-16 06:40:42
看起来您需要声明var1、var2和var3。
也不是这样:
getline (myfile,name,'\t');
getline (myfile,var1,'\t');
getline (myfile,var2,'\t');
getline (myfile,var3,'\t');试试这个:
myfile >> name;
myfile >> var1;
myfile >> var2;
myfile >> var3;这并不是因为你所拥有的是错误的,而是第二个更干净,可以处理所有的空格。
发布于 2018-08-18 21:33:50
我认为当数字以一组没有空格的形式打印出来时,原因是您需要在变量之间加上空格,如下所示:
cout << name << " " << var1 << " " << var2 << " " << var3 << "\n";https://stackoverflow.com/questions/3946558
复制相似问题