gpt4 book ai didi

c++ - 如何使用带有多个定界符的 istringstream

转载 作者:太空狗 更新时间:2023-10-29 21:26:07 29 4
gpt4 key购买 nike

您好,我想问一下如何从一个字符串中解析多个由“/”和空格分隔的 float 。

文件中的文本格式为“f 1/1/1 2/2/2 3/3/3 4/4/4”我需要将这行文本中的每个整数解析为几个 int 变量,然后使用这些变量构造一个“face”对象(见下文)。

int a(0),b(0),c(0),d(0),e(0);
int t[4]={0,0,0,0};
//parsing code goes here
faces.push_back(new face(b,a,c,d,e,t[0],t[1],t[2],t[3],currentMaterial));

我可以用 sscanf() 做到这一点,但我的大学讲师警告我不要这样做,所以我正在寻找替代方法。我也不允许使用其他第 3 方库,包括 boost。

已经提到了正则表达式和使用 stringstream() 进行解析,但我对两者都不是很了解,希望得到一些建议。

最佳答案

如果您使用 std::ifstream 读取文件,则首先不需要 std::istringstream(尽管使用两者非常相似,因为它们继承自相同的基类)。以下是使用 std::ifstream 的方法:

ifstream ifs("Your file.txt");
vector<int> numbers;

while (ifs)
{
while (ifs.peek() == ' ' || ifs.peek() == '/')
ifs.get();

int number;
if (ifs >> number)
numbers.push_back(number);
}

关于c++ - 如何使用带有多个定界符的 istringstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500906/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com