我试图用C++做一个简单的初学者任务.我有一个包含"John Smith 31"行的文本文件.而已.我想使用ifstream变量读取此数据.但是我想把名字"John Smith"读成一个字符串变量,然后将数字"31"读成一个单独的int变量.
我尝试使用getline函数,如下所示:
ifstream inFile;
string name;
int age;
inFile.open("file.txt");
getline(inFile, name);
inFile >> age;
cout << name << endl;
cout << age << endl;
inFile.close();
Run Code Online (Sandbox Code Playgroud)
这个问题是它输出整行"John Smith 31".是否有一种方法可以告诉getline函数在获得名称之后停止然后再"重启"以检索数字?没有操作输入文件,那是什么?
getline,因为它命名状态,读取整行,或至少直到可以指定的分隔符.
所以答案是"不",getline不符合你的需要.
但你可以这样做:
inFile >> first_name >> last_name >> age;
name = first_name + " " + last_name;
Run Code Online (Sandbox Code Playgroud)
小智 7
ifstream inFile;
string name, temp;
int age;
inFile.open("file.txt");
getline(inFile, name, ' '); // use ' ' as separator, default is '\n' (newline). Now name is "John".
getline(inFile, temp, ' '); // Now temp is "Smith"
name.append(1,' ');
name += temp;
inFile >> age;
cout << name << endl;
cout << age << endl;
inFile.close();
Run Code Online (Sandbox Code Playgroud)