所以,我有一个包含字符串模式的文件,然后是逐行交替的int。
这样的事情:
John McClane
30
James Bond
150
Indiana Jones
50
在这个例子中,我将John McClane设置为字符串变量,然后将30设置为整数变量。我的问题是处理两种类型。我想使用getline()
,但这仅适用于字符串。
这样做是否有效或“正确”?
答案 0 :(得分:1)
您可以尝试多种方法。
cin >> in;
)。如果您想要一个强大的程序,您可以使用cin.good()我不知道是否有一种“正确”的方式来做到这一点,但这不是一个非常繁重的操作,所以无论你选择什么都应该没问题。
答案 1 :(得分:0)
你可以像这样制作一个变量
string ibuf;
然后将其转换为执行此操作的整数
getline(cin, ibuf);
(Whatever your int variable is) = strtol(ibuf.c_str(), NULL, 10);
答案 2 :(得分:0)
关于C ++的一件事是,有很多方法可以完成任何一项任务。从字符串获取整数的一种方法是使用字符串流。有关stringstreams here
的教程至于阅读交替文件的问题,请考虑以下伪代码:
boolean isInt = false;
while(fileIsNotOver) {
//getline
if(isInt) {
//use stringstream to get int here
} else {
//do whatever with the name here
}
isInt = !isInt;
}
答案 3 :(得分:0)
我不知道这是否完全有效,因为我没有测试它,但它只是编译得很好,答案应该像我想的那样。
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
int counter = 0;
int number;
string test_string;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( getline (myfile,test_string) )
{
cout << test_string << '\n';
++counter;
if(counter % 2 == 0 ){
number = atoi(test_string.c_str());
cout << number << '\n';
}else{
cout << test_string << '\n';
}
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
答案 4 :(得分:0)
你可以尝试这样读取一个字符串然后逐行交替。
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
string name;
int number;
freopen("input.txt", "r", stdin);
while (getline(cin, name))
{
cin >> number;
/*
process the input here
...
...
*/
getline(cin, name); // just to read the new line and/or spaces after the integer
//getchar(); //you can use getchar() instead of getline(cin, name) if there is no spaces after the integer
}
return 0;
}
谢谢!!!