我试图从文件中获取一个值,看看它是int还是字符串。如果它是一个int,它应该进入tempNum var,如果它是一个字符串,它应该进入tempString var。我写的其余代码只是需要将该值转换为正确的变量。
while (!myFile.eof())
{
try
{
myFile >> tempNum;
}
catch (invalid_argument&)
{
myfile >> tempString;
}
}
第二次尝试:
ifstream myFile;
myFile.open("data.txt");
while (myFile >> tempString)
{
tempNum = -1;
tempString = "-0";
bool isInteger = true;
for (int i = 0; i < tempString.length(); ++i)
{
if (!isdigit(tempString[i]))
{
isInteger = false;
break;
}
}
if (isInteger)
{
tempNum = stoi(tempString);
if (tempNum != -1)
cout << tempNum;
}
if (tempString != "-0")
cout << tempString;
}
system("pause");
return 0;
答案 0 :(得分:2)
if (myFile >> tempNum) {
// it worked as an int
} else if (myfile >> tempString) {
// it worked as a string
}
答案 1 :(得分:1)
当你从文件中读取时,你应该把它读成一个字符串:
while (fileVar >> myString)
{
// Do something with the string from file
}
因此,您可以测试每个角色,看看整体是什么。下面是如何只分离int的。否则,如果您想要仅包含字母的单独字符串,请将“isdigit()”函数替换为“isalpha()”,或者测试特定字符。
// Input validation (int)
bool isInteger = true;
for (int i = 0; i < myString.length(); ++i)
{
if (!isdigit(myString[i]))
{
isInteger = false;
break;
}
}
if (isInteger)
{
int myInt = stoi(myString);
}