从文件中抓取值以查看它们是int还是字符串

时间:2015-09-27 01:02:20

标签: c++

我试图从文件中获取一个值,看看它是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;

2 个答案:

答案 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);
}