gpt4 book ai didi

c++ - 使用 stringstream 提取特定标记

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:52 24 4
gpt4 key购买 nike

我在 csv 文件的每一行中提取了 14 个标记,我的问题是在任何标记中如果有空格,我想保留它,但我使用的是 stringstream 所以当我尝试提取数据,我排除了同一个标记的空格,它输入不正确,之后会弄乱所有数据。我需要一种方法来使用 stringstream 但仍然能够保留标记中的空格。我希望准确地提取第三个 token (在我的例子中),但最好知道一般情况下如何提取任何 token

例如:csv 文件将是:

PHIL, 100, Intro to Philosophy, 6, Bobby,...(全部在一行上)

我有一个构造函数,它引用了应该初始化我的数据成员的 stringstream 对象。当我得到一个通常有空格的标记时,它会停在一个空格处,在这个例子中它只需要“Intro”然后将它存储到我的 classTitle 变量中,但我想要整个“Intro to Philosophy”。我还有一个教师姓名字段,但人名中几乎没有空格。但一般来说,如何保留间距?

这是我的构造函数:

Course( stringstream &ss ){


ss >> dept >> courseNumber >> courseTitle >> numAs >> numBs >> numCs >> numDs >> numFs >> numIs >> numNRs
>> numSs >> numUs >> numWs >> instructor;

dump();
}

这是我读取文件的主要位置,转储只是我用来输出数据的函数,我可以验证它是否正确:

string dummyLine; // string meant to be used to skip over first line
getline(gradeFile, dummyLine);
while ( gradeFile.good() ){ // read until the end of the file

stringstream ss;
getline(gradeFile, input); // r)ead a line of input, stop at a comma
replace(input.begin(), input.end() , ',', ' ');

ss << input;
Course course(ss);


if ( count == 0 ){
//course.dump();
}

count++;

break;
}

但实际上在我的输出中,即使 csv 文件中的数字不是 0,我在真实数据中的“Intro”之后得到了一堆 0,所以这也让我感到困惑,因为我认为每个标记之后这将获得我想要输入的 token 将获得的值,除非是因为最多 13 个的其他字段是整数。

最佳答案

Streams 并不是真正适合您要解决的问题。虽然可以通过几种不同的方式实现,但您必须经历很多麻烦才能使其正常工作。相反,只读取整行/任何内容然后标记字符串要容易得多 - 我认为在这里使用正则表达式非常有意义。

关于c++ - 使用 stringstream 提取特定标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52232103/

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