我正在从Excel文件中读入字符串向量的向量。但是,我的示例excel文件的第一行有12列,当我尝试使用while(getline(file,line,'\n'))
在while循环中将该行读入单个字符串时,它将获得大部分内容,但在字符串末尾以“ ...”结尾
我假设这是因为字符串无法容纳更多信息。我尝试的一种解决方法是简单地使用while (getline(file, line,','))
并将每一列中的每个元素保存在其向量的相应索引中。这种方式实际上对我来说更好,因为无论如何我都必须这样做,所以我不妨从开始做起。但是...这样做很复杂,因为我无法知道指针何时移至下一行。不知道何时在行尾,我不可能将每个元素都放在向量的正确索引中。我怎么知道指针何时位于行尾或是否有其他方法来解决此问题?
这是C ++语言
vector<vector<string>> list;
int size; //number of columns
while(getline(file,line,','))
{
vector<string> test;
list.push_back(test);
list[i%size].push_back(line)
}
答案 0 :(得分:1)
我认为您可以尝试使用std :: stringstream拆分逗号。 这是用于将csv文件读取为2D向量的示例代码:
vector<vector<string>> list;
ifstream file("myfile.csv");
while(file){
string line;
if(!getline(file,line)) break;
istringstream ss(line);
vector<string> words;
while(ss){
string s;
if(!getline(ss, s, ',')) break;
words.push_back(s);
}
list.push_back(words);
}
测试:
for(size_t row = 0, maxrow = list.size(); row < maxrow; row++)
{
for (size_t col = 0, maxcol = list[row].size(); col < maxcol; col++)
cout << list[row][col] << ", ";
cout << "\n";
}