C++ 无法在getline之后打印向量字符串

C++ 无法在getline之后打印向量字符串,c++,ifstream,c++20,cout,getline,C++,Ifstream,C++20,Cout,Getline,我有一个.csv文件,其中包含以下内容: 1.0,2.0 2.0,3.0 现在我想读取此文件并将其打印到终端。 我希望输出如下所示: 1.0|2.0| 2.0|3.0| 但我得到的只是: | | 当我运行调试器时,向量包含正确的数据,但它不会打印它 cout时的向量数组(调试器): array={std::vector} [0]={std::vector} [0]={std::basic_string}“1.0” [1] ={std::basic_string}“2.0\r” [1] ={

我有一个.csv文件,其中包含以下内容:

1.0,2.0
2.0,3.0
现在我想读取此文件并将其打印到终端。 我希望输出如下所示:

1.0|2.0|
2.0|3.0|
但我得到的只是:

|
|
当我运行调试器时,向量包含正确的数据,但它不会打印它

cout时的向量数组(调试器):

array={std::vector}
[0]={std::vector}
[0]={std::basic_string}“1.0”
[1] ={std::basic_string}“2.0\r”
[1] ={std::vector}
[0]={std::basic_string}“2.0”
[1] ={std::basic_string}“3.0\r”
我的代码:

#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>

int main()
{
    using namespace std;

    ifstream in("C:\\Users\\freit\\CLionProjects\\Aufgabe2\\data.csv", ios_base::in);

    string line, field;

    vector< vector<string> > array;  // the 2D array
    vector<string> v;                // array of values for one line only

    while ( getline(in,line) )    // get next line in file
    {
        v.clear();
        stringstream ss(line);

        while (getline(ss,field,','))  // break line into comma delimited fields
        {
            v.push_back(field);  // add each field to the 1D array
        }

        array.push_back(v);  // add the 1D array to the 2D array
    }

    // print out what was read in

    for (size_t i=0; i<array.size(); ++i)
    {
        for (size_t j=0; j<array[i].size(); ++j)
        {
            cout.flush();
            cout << array[i][j] << "|"; // (separate fields by |)
        }
        cout << "\n";
    }

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main()
{
使用名称空间std;
ifstream-in(“C:\\Users\\freit\\CLionProjects\\Aufgabe2\\data.csv”,ios\u base::in);
字符串行、字段;
vectorarray;//二维数组
向量v;//仅一行的值数组
while(getline(in,line))//获取文件中的下一行
{
v、 清除();
弦流ss(线);
while(getline(ss,字段“,”)//将行拆分为逗号分隔的字段
{
v、 向后推(字段);//将每个字段添加到1D数组中
}
array.push_back(v);//将一维数组添加到二维数组
}
//把读到的内容打印出来

对于(size_t i=0;i而言,问题出在我想要读取的
data.cls
中。 调试器在每行末尾显示一个
\r
()。 这可能是在用Excel打开
data.cls
并勾选自动保存后出现的。
在编写新的
数据后,问题得到解决。cls
使用标准windows texteditor。通过注释获得了解决方案!

在此处打印预期输出:(除了额外的尾随
|
)问题是:即使
数组[i][j]的内容
没有打印,你应该看到
|
而不仅仅是每行
|
。你确定你正在编译你认为你正在编译的代码吗?我确定。这就是为什么我如此困惑的原因…使用clion
\r
是一个回车符。可能是你在Windows中编写了文件,但在Linux中阅读了它,或者相反,请看这里:我将编写当答案解决了你的问题时,你应该接受它:)只在2天内可用。他真的吗?我不知道这个限制。无论如何,很乐意帮忙。
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include <fstream>

int main()
{
    using namespace std;

    ifstream in("C:\\Users\\freit\\CLionProjects\\Aufgabe2\\data.csv", ios_base::in);

    string line, field;

    vector< vector<string> > array;  // the 2D array
    vector<string> v;                // array of values for one line only

    while ( getline(in,line) )    // get next line in file
    {
        v.clear();
        stringstream ss(line);

        while (getline(ss,field,','))  // break line into comma delimited fields
        {
            v.push_back(field);  // add each field to the 1D array
        }

        array.push_back(v);  // add the 1D array to the 2D array
    }

    // print out what was read in

    for (size_t i=0; i<array.size(); ++i)
    {
        for (size_t j=0; j<array[i].size(); ++j)
        {
            cout.flush();
            cout << array[i][j] << "|"; // (separate fields by |)
        }
        cout << "\n";
    }

    return 0;
}