我想知道如何从C ++中的csv文件中读取特定值,然后读取文件中的下四个项目。例如,这就是文件的样子:
fire,2.11,2,445,7891.22,water,234,332.11,355,5654.44,air,4535,122,334.222,16,earth,453,46,77.3,454
我想要做的是让我的用户选择其中一个值,让我们说“空气”,然后阅读接下来的四个项目(4535 122 334.222 16
)。
我只想使用fstream,iostream,iomanip
个库。我是一个新手,我写代码很可怕,所以请你温柔。
答案 0 :(得分:0)
您应该阅读有关解析器的信息。 Full CSV specifications
如果您的字段没有逗号和双引号,并且您需要快速解决方案,请搜索getline
/ strtok
,或尝试此操作(未编译/测试):
typedef std::vector< std::string > svector;
bool get_line( std::istream& is, svector& d, const char sep = ',' )
{
d.clear();
if ( ! is )
return false;
char c;
std::string s;
while ( is.get(c) && c != '\n' )
{
if ( c == sep )
{
d.push_back( s );
s.clear();
}
else
{
s += c;
}
}
if ( ! s.empty() )
d.push_back( s );
return ! s.empty();
}
int main()
{
std::ifstream is( "test.txt" );
if ( ! is )
return -1;
svector line;
while ( get_line( is, line ) )
{
//...
}
return 0;
}