-3

所以在我的 txt 文件中,我有这样的数字

1,200,400
2,123,321
3,450,450
4,500,250

每次我将有 3 个数字,我需要读取它们并将它们保存在一些变量中,任何人都可以帮助我如何做到这一点,因为大多数情况下我都会获得展示如何读取字符的教程,但如果我尝试编写它们在变量中我得到一些奇怪的数字......

4

4 回答 4

0
std::fstream myfile("filename.txt", std::ios_base::in);

int a ,b,c;
char ch; //For skipping commas
while (myfile>> a >> ch >> b>> ch >>c)
{
    // Play with a,b,c
}

myfile.close();
于 2013-10-05T20:22:47.480 回答
0

如果要读取数字,.ignore()则需要逗号(或将其提取到 a 中char)。如果要保存元组,可以使用std::vectorof std::tuple<int, int, int>

std::vector<std::tuple<int,int,int>> myNumbers;
int number1, number2, number3;

while(((file >> number1).ignore() >> number2).ignore() >> number3){
    myNumbers.push_back(make_tuple(number1, number2, number3));
}
于 2013-10-05T20:25:12.053 回答
0

最简单的方法(我猜)是将逗号读入虚拟字符变量。

int num1, num2, num3;
char comma1, comma2;
while (file >> num1 >> comma1 >> num2 >> comma2 >> num3)
{
    ...
}

将逗号读入变量后comma1comma2您可以忽略它们,因为您真正感兴趣的只是数字。

于 2013-10-05T20:25:23.400 回答
0

您的文件与 CSV 文件的格式相同,因此您可以使用它。

来自http://www.cplusplus.com/forum/general/13087/

ifstream file ( "file.csv" );
    string value;
    while ( file.good() )
    {
         getline ( file, value, ',' ); // read a string until next comma: http://www.cplusplus.com/reference/string/getline/
         cout << string( value, 1, value.length()-2 ); // display value removing the first and the last character from it
    }
于 2013-10-05T20:29:54.940 回答